Volley请求网络简单学习

Volley网络请求框架总结,java,kotlin 说两句 现在很多人都说volley已经过时了,因为现在主流的就是OKhttp和retrofit以及dragger2了,框架是主流的MVP框架,使用这些网络请求库更优良,这段时间刚好有空,想整理一下,我的理解里,没有过时不过时,没有哪个好,哪个不好,技术是用来解决实际问题的,有诸多的选择的时候,一定有一个最适合当前问题的解决方案,因为每一个工具都有其特点、优势、劣势,那些淘汰掉的是因为有更方便更优良... 阅读详情

请求网络的4种方式.get和post分别2种

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /**
         * get 的2种请求方式
         */
        // GET_StringRequest();
        // GET_JsonObjectRequest();

        /**
         * post 的2种请求方式
         */
        //  POST_StringRequest();
        //  POST_JsonObjectRequest();

        /**
         *  自定义封装的 get请求
         */
        Volley_Get();

    }

    /**
     * 初始化控件
     */
    private void initView() {
        iv_img = (ImageView) findViewById(R.id.iv_img);
    }

    /**
     * 自定义的 get请求
     * 好处 :  可以在请求成功之前 全局的设置 加载框 不用再每个请求之前写
     */
    private void Volley_Get() {
        String url = "http://apis.juhe.cn/mobile/get?phone=18300077682&key=335adcc4e891ba4e4be6d7534fd54c5d";

        VolleyRequest.RequestGet(this, url, "abcGet", new VolleyInterface(this, VolleyInterface.mListener, VolleyInterface.mErrorListener) {
            @Override
            public void onMySuccess(String result) {
                Toast.makeText(MainActivity.this, "请求成功 : " + result, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onMyError(VolleyError error) {
                Toast.makeText(MainActivity.this, "请求失败 : " + error, Toast.LENGTH_SHORT).show();
            }
        });

    }

    private void POST_StringRequest() {
        //  String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?";
        String url = "http://apis.juhe.cn/mobile/get?";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        //TODO 可以 全局的设置 弹出 加载中
                        Toast.makeText(MainActivity.this, "请求成功 : " + response, Toast.LENGTH_SHORT).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this, "请求失败 : " + error, Toast.LENGTH_SHORT).show();
                        //TODO 此处可以 提示请求失败
                    }
                }) {
            @Override //volley 在 post 请求时使用getParams()方法传递参数
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> stringMap = new HashMap<>();

                stringMap.put("phone", "18300077682");
                stringMap.put("key", "335adcc4e891ba4e4be6d7534fd54c5d");
                return stringMap;
            }
        };

        stringRequest.setTag("Tag_post");
        MyApplication.getHttpQueues().add(stringRequest);
    }

    private void GET_JsonObjectRequest() {

        String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=18300677682";

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
                Request.Method.GET,
                url,
                null, //get请求可以传null,但是 post请求是 参数的拼接
                new Response.Listener<JSONObject>() {
                    @Override //请求成功时 回调
                    public void onResponse(JSONObject response) {
                        Toast.makeText(MainActivity.this, "请求成功 : " + response, Toast.LENGTH_SHORT).show();
                        Log.d("MainActivity", "请求成功 : " + response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override //请求失败时回调
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this, "请求失败 : " + error, Toast.LENGTH_SHORT).show();
                    }
                });
        jsonObjectRequest.setTag("Tag_GET"); //设置标签
        MyApplication.getHttpQueues().add(jsonObjectRequest);  //加入到全局队列中
    }

    private void POST_JsonObjectRequest() {
        String url = "http://apis.juhe.cn/mobile/get?";
        //String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?";

        HashMap<String, String> stringMap = new HashMap<>();
        stringMap.put("phone", "18300077682");
        stringMap.put("key", "335adcc4e891ba4e4be6d7534fd54c5d");
        // stringMap.put("apikey","b63a29ab2f4760818e4ca641cd355934");
        JSONObject jsonObject = new JSONObject(stringMap);

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
                Request.Method.POST, url, jsonObject,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Toast.makeText(MainActivity.this, "请求成功 : " + response.toString(), Toast.LENGTH_SHORT).show();
                        Log.d("MainActivity", "请求成功 : " + response.toString());
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this, "请求失败 : " + error, Toast.LENGTH_SHORT).show();

            }
        });

        jsonObjectRequest.setTag("Tag_GET"); //设置标签
        MyApplication.getHttpQueues().add(jsonObjectRequest);  //加入到全局队列中
    }

    private void GET_StringRequest() {
        //String url = ""; //请求接口地址
        //示例地址 请求接口地址
        String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=18300677682";
        StringRequest request = new StringRequest(
                Request.Method.GET,
                url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Toast.makeText(MainActivity.this, "请求成功 : " + response, Toast.LENGTH_SHORT).show();
                        Log.d("MainActivity", "请求成功 : " + response.toString());
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this, "请求失败 : " + error, Toast.LENGTH_SHORT).show();
            }
        });
        request.setTag("Tag_GET"); //设置标签
        MyApplication.getHttpQueues().add(request);  //加入到全局队列中
    }

    @Override
    protected void onStop() {
        super.onStop();

        MyApplication.getHttpQueues().cancelAll("Tag_GET"); //此行代表Activity与 Volley 的生命周期进行关联
    }
}

自定义Application类

/**
 * 自定义Application类
 * 
 * 创建RequestQueue 请求队列对象,并对外暴露方法
 */
public class MyApplication extends Application
{
    public static RequestQueue sQueue;  //请求队列

    @Override
    public void onCreate() {
        super.onCreate();
        sQueue = Volley.newRequestQueue(getApplicationContext()); //建立全局请求队列
    }

    //获取请求队列
    public static RequestQueue getHttpQueues(){
        return sQueue;
    }
}

自定义封装接口 请求成功 和请求失败的回调

**
 * 自定义封装 请求成功 和请求失败的回调
 */
public abstract class VolleyInterface {

    public Context mContext;
   public static Response.Listener<String> mListener;
    public  static  Response.ErrorListener mErrorListener;

    public VolleyInterface(Context context, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        this.mContext = context;
        this.mListener = listener;
        this.mErrorListener = errorListener;
    }

    /**
     * 自定义的 请求成功的回调方法
     *
     * @return mListener
     */
    public Response.Listener<String> loadingListener() {
        mListener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                onMySuccess(response);
            }
        };
        return mListener;
    }


    /**
     * 自定义的 请求失败的回调
     *
     * @return
     */
    public Response.ErrorListener errorListener() {
        mErrorListener = new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                onMyError(error);
            }
        };

        return mErrorListener;
    }

    public abstract void onMySuccess(String result);

    public abstract void onMyError(VolleyError error);

}

Volley的 简单二次封装

package com.net.volleydemo.volley;

import android.content.Context;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.toolbox.StringRequest;
import com.net.volleydemo.MyApplication;

import java.util.Map;

/**
 * Volley的 简单二次封装
 */
public class VolleyRequest {

    public static StringRequest stringRequest;
    public static Context context;


    /**
     * 自定义的 get请求方法
     * @param context 上下文
     * @param url   请求地址
     * @param tag   设置的标签
     * @param vif   监听的回调方法
     */
    public static void RequestGet(Context context,String url,String tag,VolleyInterface vif) {
        MyApplication.getHttpQueues().cancelAll(tag); //在请求网络之前,把之前的请求全部取消,防止重复请求

        stringRequest = new StringRequest(Request.Method.GET,url,vif.loadingListener(),vif.errorListener());
        stringRequest.setTag(tag);
        MyApplication.getHttpQueues().add(stringRequest);
        MyApplication.getHttpQueues().start();

    }

    /**
     * 自定义的 post请求方法
     * @param context
     * @param url
     * @param tag
     * @param params  因为post的请求方法 所以要在 getParams() 中传递参数
     * @param vif   请求成功或失败的监听
     */
    public static void RequestPost(Context context,String url,String tag, final Map<String,String> params,VolleyInterface vif) {
        MyApplication.getHttpQueues().cancelAll(tag); //在请求网络之前,把之前的请求全部取消,防止重复请求
        stringRequest = new StringRequest(Request.Method.POST,url,vif.loadingListener(),vif.errorListener()){

            @Override //因为是 post 请求 所以需要传递参数
            protected Map<String, String> getParams() throws AuthFailureError {
                return params;
            }
        };
    stringRequest.setTag(tag); //设置标签
    MyApplication.getHttpQueues().add(stringRequest); //加入全局队列
    MyApplication.getHttpQueues().start();
}    }


使用Volley发起网络请求 前言 本文是对Google官方文档中关于Volley部分的学习和总结,原文地址详情参考,通过对文档的翻译和学习,总结出自己的理解,通过一个Demo来展现 Volley概述 Volley是一个Google推出的一个HTTP网络请求开源库,它可以简化Android应用程序的联网操作,以更快的速度进行网络请求,很多大公司的App都集成了Volley库。 Volley开源库具有的优点包括: 自动进行网络... 阅读详情

相关推荐

使用Volley请求网络图片加载

前言 Google官方文档中并没有介绍Volley请求网络图片的方法,但实际上,Volley提供了十分强大的网络图片加载的功能,本文是对Volley关于请求网络图片的3种方式的学习总结,内容上参考了郭神的帖子(原文链接) Volley请求网络图片的方法 Volley请求网络图片的方法相比于String和JSON,要多一些方式,但从底层上看,还是基于RequestQueue+Requestd 的方式...

大山喵写博客的地方 1201

网络框架 Volley 优缺点

Volley到底有哪些特点呢? 自动调度网络请求多个并发的网络连接通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致支持请求优先级支持取消请求的强大API,可以取消单个请求或多个易于定制健壮性:便于正确的更新UI和获取数据包含调试和追踪工具 Volley优点 可以取消请求容易扩展,面向接口编程网络请求线程NetworkDispatcher默认开启了4个,可以优化,通过手机CP

嘻哈包袱铺 专栏 5064

Android Studio中使用开源库volley进行网络访问简单示例

volley特性 :    1>使用volley开源库进行网络访问,使网络访问更简单,快速,健壮    2>可以将网络访问与activity生命周期相关联 1.环境     AndroidStudio 2.1正式版    volley.jar    关于将volley.jar导入androidStudio网上有很多教程,很简单,此处省略 2.开始使用volley库进行网络访问

u013984533的博客 2693

如何在 Android 中使用 Volley 库

这个例子演示了如何在 android 中使用简单的 volley request。 第 1 步- 在 Android Studio 中创建一个新项目,转到 File ⇒ New Project 并填写所有必需的详细信息以创建一个新项目。 第 2 步- 将以下代码添加到 res/layout/activity_main.xml。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sch

allway2的博客 614

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 211

SPAD 单光子雪崩二极管

SPAD,全称为,是一种高灵敏度的光电探测器件,能够在非常低的光照水平下检测单个光子。SPAD在工作时,当一个光子被探测器吸收后,能够触发一个雪崩效应,产生一个可以被检测到的电信号。

qq_42786033的博客 1万+

Android 异步网络请求框架-Volley

Android 异步网络请求框架-Volley1. 功能介绍1.1. VolleyVolley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。 名字由来:a burst or emission of many things or a large amount at once 发布演讲时候的配图 Volley 的特

年少的风 5944

Springboot + vue 实现导出word

Springboot + vue 实现导出word 后端代码 使用word先创建好已知的模板 使用word工具另存为.xml格式的文件 使用freemarker ftl模板 将修改后的xml文件复制到开发工具中,将文件后缀修改为ftl文件,并且将里面的动态值使用${}包裹例如:${zyjn} word工具类 /*** * * Project Name:maventest * <p>生成word工具类<br> * * @ClassName: WordUtil *

qq_45542373的博客 2895

Volley的简单用法-post请求

实现效果图:(1)把volley.jar复制到libs文件夹下(2)在app目录下的build.gradle中添加引用:compile files('libs/volley.jar')准备工作到这里就做完啦(3)在清单文件里面添加联网权限&lt;uses-permission android:name="android.permission.INTERNET" /&gt;(4)新建一个xml,作为...

cf8833的博客 2797

C# WinForms实战:5分钟用ScottPlot打造专业级示波器界面(附完整代码)

本文详细介绍了如何在C# WinForms应用中,利用ScottPlot.WinForms库快速构建一个专业级的软件示波器界面。通过从环境配置、静态波形绘制到动态数据实时更新的完整实战演示,帮助开发者高效实现高性能的波形显示功能,适用于工业监控、信号分析等多种场景。

weixin_29198045的博客 831

工业质检终极方案:C#上位机融合 YOLO+Blob分析(一站式尺寸测量+缺陷检测)

本次上位机界面严格遵循工业现场操作规范简洁、直观、按钮大、文字清晰、参数可视化调节,操作人员为车间工人/质检员,无需复杂操作,所有功能一目了然。所有控件均为WinForms原生控件,拖拽即可完成布局,无任何自定义控件,开发效率拉满,核心布局永久复用本次实战完成的C#上位机+YOLO+Blob融合质检方案,是工业规则零件全尺寸质检的终极落地方案,完美解决了单一检测方案的所有短板,具备以下不可替代的工业价值。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1344

让网络请求简单点——Volley框架(上)

简单点,说话的方式简单点……(《演员》薛之谦)

深海大菠萝 1109

【算能】TPU 指令集架构深度解析

TPU指令集以领域专用性与数据流驱动为核心,通过精简指令集、硬件固化逻辑与高并行架构,实现张量计算的极致性能。开发者通常无需直接编写指令,但理解其设计原理对性能调优(如内存布局优化、指令调度)至关重要。算能TPU通过开放指令描述与编译器工具链,为垂直行业提供了更高灵活性的定制空间,而谷歌TPU则依赖编译器的全自动化优化,更适合大规模标准模型部署。未来,随着稀疏计算、光子计算等技术的引入,TPU指令集将进一步向高能效与高泛化性演进。

浩瀚之水的专栏 1183

Android网络请求框架Volley

主要熟悉Volley框架的简单使用,适用于初级开发者!

郑敏 1万+

TC3XX - MCAL知识点(九):PWM EB-tresos配置说明及代码浅析

脉冲宽度调制(PWM)驱动器负责提供与AUTOSAR指定的PWM信号生成相关的标准服务。PWM通道的底层定时器驱动是GTM (TOM或ATOM片)或CCU6 (T12或T13片)定时器通道。软硬件匹配关系如下:PWM直接引用的是GTM与CCU6模块,然后GTM与CCU6再关联到Port的,根据软硬件匹配关系,也能调用中断来使用,本例子没使用中断。CCU6是一个高分辨率的16位捕获和比较单元,具有特定的应用模式,主要用于交流驱动控制。特殊的工作模式支持控制无刷直流电机使用霍尔传感器或反电动势检测。

梦想技术家 2887

100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状、堆积、横向、百分比、3D柱状图)

0. 专栏导读 1. 普通柱状图 2. 簇状柱形图 3. 堆积柱形图 4. 横向柱状图 5. 横向双向柱状图 6. 百分比堆积柱形图 7. 3D柱形图 8. 3D堆积柱形图 9. 3D百分比堆积柱形图

努力让自己发光,对的人才能迎着光而来 2万+

android Volley请求框架的简单使用——访问网络和加载图片

我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高。不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码。于是乎,一些Android网络通信框架也就应运而生,比如说Asy

qq_33776306的博客 1107

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Volley框架支持HTTPS请求

第一次写帖子,嘿嘿。 最近了解到google2013IO大会出了个网络框架,正好项目也需要用到,就看了下。 最后发现接口都是HTTPS的,但是Volley默认是不支持HTTPS,网上找了好久,都没有对Volley HTTPS请求做解答。 所以分享下心得。 bvin大神已经分析框架的帖子 在下面的传送: 谷歌Volley网络框架讲解——第一篇

ysh06201418的专栏 6888

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Volley框架--网络请求(GET和POST请求的使用)

在Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。 在我们平常的开发中,我们经常需要使用到网络请求,这时候我们就需要一个健壮的框架保证项目的稳定,显然自己开发一个太浪费时间,不能保证开发效率,Volley将是一个很好的选择,下面我就介绍使用Volley框架进行网络请求的两种方式: 1、创建请求队列: 我们

黎荣恒的博客 1万+

使用OKHttp3替换Volley的底层网络请求

一、自定义Volley框架中处理网络请求的HttpStatck,下面我们就使用OKHttp3实现HttpStack的网络请求。 1、在build.gradle文件中添加依赖: compile 'com.mcxiaoke.volley:library:1.0.19' compile 'com.squareup.okio:okio:1.6.0' compile 'com.squa

android_ls的专栏 8393

Volley网络请求

首先写一个MyApp类,继承Application public class MyApp extends Application { private static RequestQueue queue; @Override public void onCreate() { super.onCreate(); queue = Volley.newRequestQueue(getA...

a506656675的博客 420

Volley 取消中断网络请求

1,Volley取消中断网络请求 先创建一个请求,并且附加标识 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main...

Cricket_7的博客 762

Volley网络请求框架总结,java,

volley网络请求框架,支持java,kotlin发起网络请求说两句介绍&amp;地址volley的特点添加volley到项目中发送简单的请求kotlin发起网络请求examplejava发起网络请求example发送请求分析取消网络请求使用标记的字符串值的示例:设置RequestQueque単例模式创建`RequestQueue`创建単例模式example使用単例对象example发起标准请求...

qq_32450965的博客 671

网络请求框架(Volley)

1,介绍 Volley是什么? 2013年Google I/O大会上推出的网络请求和图片加载框架 其优点是api简单,性能优秀 非常适合数据量不大但是通信频繁的网络请求,而对于大数据量的操作,如文本下载,表现则没有那么好 Volley内部仍然是使用的HttpURLConnection和HttpClient进行网络请求的,只是对于不同的...

Cricket_7的博客 328

soas项目网络请求机制解析:Volley框架的高效应用

soas项目(GitHub 加速计划)是一个面向初学者和有经验开发者的Native Android示例项目,专注于Lollipop及Material Design设计规范。在移动应用开发中,高效的网络请求处理是提升用户体验的关键环节,soas项目采用Volley框架构建了稳定可靠的网络请求机制,本文将深入解析其实现原理与应用技巧。 ## Volley框架的核心优势与项目集成 Volley作为A

gitblog_00128的博客 607

网络请求OkHttp,Volley,Retrofit 使用的比较

OkHttp的使用OkHttp现在最新的的版本在github上是3.5.0,它是来自Square公司。有以下几个优点: 支持 SPDY1 ,允许连接同一主机的所有请求分享一个socket。 如果SPDY不可用,会使用连接池减少请求延迟。 使用GZIP压缩下载内容,且压缩操作对用户是透明的。 利用响应缓存来避免重复的网络请求。 接下来看下简单的使用说明: 在gradle中配置: compile 'co

小学长的博客 3535
上一篇: 自定义加载网络图片工具: 三级缓存 解决图片显示错位的问题
下一篇: ViewPager 切换页面
高锦湖
博客等级 码龄11年 11粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值