Android框架Volley

    xiaoxiao2025-11-26  22

    1.Volley框架使用基本上一样的顺序(三步走):(不需要考了创建新线程的问题)

    访问网络别忘了添加权限:<uses-permission android:name="android.permission.INTERNET"/>

    (1).创建:RequestQueue requestQueue= Volley.newRequestQueue(this);

    (2.1.1)当使用StringRequest时  

      

    StringRequest stringRequest=new StringRequest(url,new Response.Listener(){},new Response.ErrorListener(){}){

    public Map<String, String> getHeaders() throws AuthFailureError {

    HashMap map=new HashMap();

        map.put("apikey ","你自己的apikey");

        return map;

    }

    };

    当用于接收JSON数据时,在url出写接口(如:

    http://apis.baidu.com/heweather/weather/free ? city=beijing)

    通过getHeaders()函数传入apikey

    在Listener 的 onResponse()函数中得到JSONString 的值。

    (2.1.2)也可以通过 getParams()对Json的api参数值进行设置这时url的值就变了,并且参数多的第一个是请求方式:

    StringRequest stringRequest=new StringRequest(url,new 

    Response.Listener(){},new Response.ErrorListener(){}){

    protected Map<String, String> getParams() throws AuthFailureError {

    HashMap map=new HashMap();

        map.put("city","beijing"); //对应的apiStore的参数是什么就写什么

        return map;

    }

    public Map<String, String> getHeaders() throws AuthFailureError {

    HashMap map=new HashMap();

        map.put("apikey ","你自己的apikey");

        return map;

    }

    };

    (注意:getHeaders 、getParams()函数都是写在新代码区)

    (2.2)JsonRequest的使用(两个直接子类:JsonObjectRequest和JsonArrayRequest)

    JsonObjectRequest JsonObjectRequest=new JsonObjectRequest("http://apis.baidu.com/heweather/weather/free?city=beijing", new Response.Listener<JSONObject>() {},new Response.ErrorListener(){}){

    public Map<String, String> getHeaders() throws AuthFailureError {

    HashMap map=new HashMap();

        map.put("apikey ","af02a3e0e93ef6cbb85eada01a1c40ae");

        return map;

    }

    };

    (在Response.Listener的onResponse()方法里通过textView2.setText(jsonObject.toString()); 得到JsonString)

    在onErrorResponse中通过volleyError.getMessage()的到错误提示)

    //使用JsonObjectRequest 需要注意:

    /*使用JsonObjectRequest或继承自JsonObjectRequest类的对象提交post请求时,

    如果有参数需要提交时必须一JsonObject的json串方式提交,否则通过getParams()方法的方式提交不管用

    */

    (2.3)加载网络图片

    //第一个URL图片的网址   第二个Listener  第三第四为最大宽和高,第五为图片质量Config.ARGB_8888四个字节,ARGB_565 ARGB_4444两个字节  第六个ErrorListener

     ImageRequest imageRequest=new ImageRequest("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg", new Response.Listener<Bitmap>() {

    @Override

        public void onResponse(Bitmap bitmap) {

    imageView.setImageBitmap(bitmap);

        }

    }, 0, 0, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {

    @Override

        public void onErrorResponse(VolleyError volleyError) {

    }

    });

    (3)添加到 requestQueue中

     requestQueue.add(imageRequest);

    // requestQueue.add(JsonObjectRequest);

    // requestQueue.add(stringRequest);

    二.Volley还提供了 NetworkImageView控件加载网络图片(四步走)

    1.首先在布局文件中创建NetworkImageView

    (含有 void类型的setImageUrl()、String getImageUrl()(得到传入的URL) 、void setDefaulImageId()(设置默认图片) 、SetErrorImageId()(设置当网络加载失败时显示的图片) 等函数)

    1.创建RequestQueue对象

    2.创建一个ImageLoader

    3.在布局文件中添加一个NetWorkImageView控件

    4.设置加载图片的网络地址和imageLoader

    代码演示:

    //首先定义出ImageLoader

    ImageLoader imageLoader=new ImageLoader(requestQueue, new ImageLoader.ImageCache() {

    @Override

        public Bitmap getBitmap(String s) {

    return null;

        }

    @Override

        public void putBitmap(String s, Bitmap bitmap) {

    }

    });

    networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);

    networkImageView.setErrorImageResId(R.mipmap.ic_launcher);//加载失败显示图片

    networkImageView.setImageUrl("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg",imageLoader);

    三.自定义Request

    (用Gson解析数据)

    参考项目: https://github.com/linyuanbin/Volley_kaiyuan

    (library-1.0.19.jar 就是这里Volley的jar包)

    相关资源:Android框架Volley使用之Json请求实现
    最新回复(0)