Android开发-网络请求框架Volley的使用,StringRequest,JsonObjectRequest,ImageRequest

1.Volley简介:

Volley是2013年谷歌官方发布的一款Android平台上的网络通信库。Volley非常适合一些数据量不大,但需要频繁通信的网络操作。使用Volley进行网络开发可以使我们的开发效率得到很大的提升,而且性能稳定性也很高。但是Volley不适合用于文件的上传下载操作。

2.Volley的特点:

使网络通信更快,更简单,更健壮;
Get/Post网络请求及网络图像的高效率异步请求;
可以对网络请求的优先级进行排序处理;
可以进行网络请求的缓存;
可以取消请求;

3. Volley的使用:

(1)在build.gradle文件中,加入Volley的依赖:

    implementation 'com.android.volley:volley:1.2.1'

(2) 在MainActivity的onCreate方法中,初始化Volley Request对象:

mQueue = Volley.newRequestQueue(this);

(3)在清单文件中进行网络权限的申请,

    <uses-permission android:name="android.permission.INTERNET" />

否则,会出现如下错误提示:

Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)

 (4)例1: StringRequest的使用:

以请求“https://www.baidu.com”为例来说明:

private void TestStringRequest() {
        StringRequest stringRequest = new StringRequest("https://www.baidu.com",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d(TAG, response);
                        mResTextView.setText(response);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, error.getMessage(), error);
            }
        });

        mQueue.add(stringRequest);
    }

 运行结果,会输出如下log:

<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css>
 

(5)例2:JsonObjectRequest的请求:

private void TestJsonRequest() {
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("https://www.tianqiapi.com/api/?version=v1",
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, "[success]:" + response.toString());
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "[Fail]:" + error.getMessage(), error);
            }
        });

        mQueue.add(jsonObjectRequest);

    }

运行结果,输出如下日志: 

[success]:{"errcode":100,"errmsg":"缺少注册参数appid或appsecret 请仔细看文档,账号注册地址 https:\/\/tianqiapi.com\/"}

(6)例3:网络图片的加载:

        ImageRequest imageRequest = new ImageRequest("https://avatar.csdn.net/5/6/A/3_u010356768.jpg",
                new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap response) {
                        img.setImageBitmap(response);
                    }
                }, 0, 0, Bitmap.Config.RGB_565,
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        img.setImageResource(R.mipmap.ic_launcher);
                    }
                });

运行结果:

 

  可以看出,正常加载了图片。

4. 补充:

(1)Volley是一个异步网络请求框架,当接收到response时,就已经是在主线程了,所以,可以直接在onResponse中进行ui的处理,不需要再用诸如handler这样的方式了;

(2)Volley框架功能非常强大,而且可以灵活进行参数等的设置。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值