美文网首页
Volley的简单使用

Volley的简单使用

作者: 禄眠 | 来源:发表于2019-12-03 20:14 被阅读0次

介绍

Volley是一个Http库,能够简化Android的联网操作,但是不适合大型下载或流式传输操作,因为Volley在解析期间会将所有响应保存在内存中

使用

在使用之前,需要添加网络权限:

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

添加依赖:

implementation 'com.android.volley:volley:1.1.1'

如果请求对象是StringRequest

GET请求:

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://www.baidu.com";
StringRequest stringRequest = new StringRequest(StringRequest.Method.GET, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // 请求成功
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // 请求失败
            }
        });
requestQueue.add(stringRequest);

POST请求:

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://www.baidu.com";
StringRequest stringRequest = new StringRequest(StringRequest.Method.POST, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                textView2.setText(response);
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> map = new HashMap<>();
        map.put("name", "Tom");
        return map;
    }
};
requestQueue.add(stringRequest);

基本上和GET请求差不多,只不过需要重写getParams()方法,设置请求的参数

如果请求对象是JsonObjectRequest

GET请求:

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://wanandroid.com/wxarticle/chapters/json";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(JsonObjectRequest.Method.GET, url, null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                textView2.setText(response.toString());
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
requestQueue.add(jsonObjectRequest);

POST请求:

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://www.baidu.com";
Map<String, String> map = new HashMap<>();
map.put("name", "Jack");
JSONObject jsonObject = new JSONObject(map);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(JsonObjectRequest.Method.POST, url, jsonObject,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                textView2.setText(response.toString());
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
requestQueue.add(jsonObjectRequest);

基本和GET请求差不多,只不过POST请求需要传入一个JSONObject

当然,Volley也可以用于加载图片

方式一:使用ImageRequest

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://cdn.pixabay.com/photo/2019/11/26/17/48/girl-4655079__340.jpg";
ImageRequest imageRequest = new ImageRequest(url,
        new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap response) {
                imageView.setImageBitmap(response);
            }
        },
        0, 0, // 代表最大宽高
        ImageView.ScaleType.CENTER_INSIDE, // 缩放类型
        Bitmap.Config.RGB_565, //颜色设置
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }
);
requestQueue.add(imageRequest);

方式二:使用ImageLoader

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://cdn.pixabay.com/photo/2019/11/26/17/48/girl-4655079__340.jpg";
ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
    private LruCache<String, Bitmap> lruCache = new LruCache<>(50); // 设置缓存大小
    @Override
    public Bitmap getBitmap(String url) {
        return lruCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        lruCache.put(url, bitmap);
    }
});

// 方式一
imageLoader.get(url, new ImageLoader.ImageListener() {
    @Override
    public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
        imageView.setImageBitmap(response.getBitmap());
    }

    @Override
    public void onErrorResponse(VolleyError error) {

    }
});

// 方式二
ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(imageView,
    R.drawable.xxx, // 默认显示的图片
    R.drawable.xxx); // 加载错误显示的图片
imageLoader.get(url, imageListener);

方式三:使用NetworkImageView

NetworkImageView是Volley自带的自定义控件,继承自ImageView,需要配合ImageLoader使用

RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "https://cdn.pixabay.com/photo/2019/11/26/17/48/girl-4655079__340.jpg";
ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
    private LruCache<String, Bitmap> lruCache = new LruCache<>(50); // 设置缓存大小
    @Override
    public Bitmap getBitmap(String url) {
        return lruCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        lruCache.put(url, bitmap);
    }
});
networkImageView.setDefaultImageResId(R.drawable.xxx);
networkImageView.setErrorImageResId(R.drawable.xxx);
networkImageView.setImageUrl(url, imageLoader);

关于Volley的使用差不多就这些了

相关文章

  • Android:Volley的使用和Volley源码分析

    Volley网络框架 Volley的简单使用 Volley源码分析 }

  • Volley 简单使用

    首先呢肯定是导入依赖: compile 'eu.the4thfloor.volley:com.android.v...

  • Volley的简单使用

    对于网络请求的封装的好处,google开发者也意识到了这一点,volley是google在2013年io大会上发布...

  • Volley的简单使用

    介绍 Volley是一个Http库,能够简化Android的联网操作,但是不适合大型下载或流式传输操作,因为Vol...

  • Volley的简单使用

    总结自尚硅谷Android视频教程《Volley》https://www.bilibili.com/video/B...

  • Volley源码分析

    一.Volley的基本使用 1.volley简单使用 1.创建一个RequestQueue 2.创建一个Strin...

  • 如何使用Volley?

    如何使用Volley? 引用 使用之前,希望你看过之前的文档,知道Volley适合干啥?简单点说,就是小且高并发的...

  • Volley的基本使用与源码解析

    Volley的基本使用 Volley 是 Google开发的一个网络请求框架,可以让你更加简单并且快速的访问网络数...

  • Volley源码解析

    volley是现在常用的网络请求库,使用也非常简单,在google的官网上就有一张图介绍volley的请求过程, ...

  • 开源项目学习之Volley(二)

    Volley不仅可以进行普通的网络请求,还提供了一个简单的图片加载框架,下面这段代码展示了最普遍的使用Volley...

网友评论

      本文标题:Volley的简单使用

      本文链接:https://www.haomeiwen.com/subject/csehgctx.html