Android网络请求框架:Volley代码

来源:互联网 发布:java多线程编程实战 编辑:程序博客网 时间:2024/05/20 10:56
  • 创建RequestQueue
RequestQueue queue=Volley.newRequestQueue(this);
    /*    * GET方式请求字符串    * */    private void getString(String url){        //2.创建StringRequst对象        StringRequest stringRequest=new StringRequest(url,listener,errorListener);        //3.将StringRequest对象添加到请求队列中        queue.add(stringRequest);    }    /*   * 请求成功回调   * */     Response.Listener listener=new Response.Listener<String>(){        @Override        public void onResponse(String s){            Log.d("TAG","onResponse: "+s);        }    };    /*    * 请求失败回调    * */    Response.ErrorListener errorListener=new Response.ErrorListener(){        @Override        public void onErrorResponse(VolleyError volleyError){            Log.d("TAG","onErrorResponse: "+volleyError.getMessage());        }    };
    /*   * POST方式请求字符串数据   * */    private void postString(String url){        StringRequest request=new StringRequest(Request.Method.POST,url,listener,errorListener){            //重写getParams()方法,传参            @Override            protected Map<String,String> getParams() throws AuthFailureError{                HashMap<String,String> map=new HashMap<>();                map.put("username","xxx");                map.put("password","xxx");                return map;            }        };        queue.add(request);    }
    /*    * 请求Json数据    *   json对象:JsonObjectRequest    *   json数组:JsonArrayRequest    * */    private void getJson(String url){        //请求Json对象        JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(url,null,new Response            .Listener<JSONObject>(){            @Override            public void onResponse(JSONObject jsonObject){                //获取到返回的JSONObject数据            }        },new Response.ErrorListener(){            @Override            public void onErrorResponse(VolleyError volleyError){            }        });        queue.add(jsonObjectRequest);        //请求json数组        JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(url,new Response            .Listener<JSONArray>(){            @Override            public void onResponse(JSONArray jsonArray){                //获取到返回的JSONArray数据            }        },new Response.ErrorListener(){            @Override            public void onErrorResponse(VolleyError volleyError){            }        });        queue.add(jsonArrayRequest);    }
    /*    * 获取图片方式一:ImageRequest    * */    private void imageReuest(String url){        /*        * String url, 图片地址        * Listener<Bitmap> listener, 请求成功回调        * int maxWidth, 图片宽度,设置为0则显示原图宽度        * int maxHeight, 图片高度,设置为0则显示原图高度        * ScaleType scaleType, 缩放模式        * Config decodeConfig, 图片颜色属性        * ErrorListener errorListener,请求失败回调        * */        ImageRequest imageRequest=new ImageRequest(url,new Response.Listener<Bitmap>(){            @Override            public void onResponse(Bitmap bitmap){                //获取到Bitmap            }        },0,0,ImageView.ScaleType.CENTER_CROP,Bitmap.Config.ARGB_4444,new Response.ErrorListener(){            @Override            public void onErrorResponse(VolleyError volleyError){            }        });        queue.add(imageRequest);    }
    /*   * 获取图片方式二:ImageLoader   *    1.获取RequestQueue   *    2.获取ImageLoader   *    3.获取ImageListener   *    4.调用ImageLoader的get方法,获取并显示图片   * */    private void imageLoader(String url){        ImageView imgView=null;        //获取ImageLoader对象:不使用缓存        ImageLoader imageLoader=new ImageLoader(queue,new ImageLoader.ImageCache(){            @Override            public Bitmap getBitmap(String s){                return null;            }            @Override            public void putBitmap(String s,Bitmap bitmap){            }        });        //获取ImageLoader对象:使用缓存        //ImageLoader imageLoader=new ImageLoader(queue,new BitmapCache());        //获取ImageListener        ImageLoader.ImageListener imageListener=ImageLoader.getImageListener(//            imgView,//用于显示图片的ImageView控件            R.mipmap.ic_launcher,//加载图片的过程中显示的图片            R.mipmap.ic_launcher);//加载失败显示的图片        //获取并显示图片        imageLoader.get(url,imageListener,0,0,ImageView.ScaleType.CENTER_CROP);    }    /*    * 自定义类实现ImageCache,使用图片缓存    * */    public class BitmapCache implements ImageLoader.ImageCache{        private LruCache<String,Bitmap> mCache;        public BitmapCache(){            int maxSize=10*1024*1024;            mCache=new LruCache<String,Bitmap>(maxSize){                @Override                protected int sizeOf(String key,Bitmap bitmap){                    return bitmap.getRowBytes()*bitmap.getHeight();                }            };        }        @Override        public Bitmap getBitmap(String url){            return mCache.get(url);        }        @Override        public void putBitmap(String url,Bitmap bitmap){            mCache.put(url,bitmap);        }    }
    /*    * 获取图片方式三:NetworkImageView控件    *   1. 创建一个RequestQueue对象。    *   2. 创建一个ImageLoader对象。    *   3. 在布局文件中添加一个NetworkImageView控件。    *   4. 在代码中获取该控件的实例。    *   5. 设置要加载的图片地址。    *    * */    private void networkImageView(String url){        ImageLoader imageLoader=new ImageLoader(queue,new BitmapCache());        NetworkImageView networkImageView=(NetworkImageView)findViewById(R.id.networkImgView);        //setImageUrl        networkImageView.setImageUrl(url,imageLoader);    }
/** * 自定义XMLRequest(仿照StringRequest) */public class XMLRequest extends Request<XmlPullParser>{    private final Response.Listener<XmlPullParser> listener;    public XMLRequest(int method,String url,Response.Listener<XmlPullParser> listener,Response.ErrorListener errorListener){        super(method,url,errorListener);        this.listener=listener;    }    public XMLRequest(String url, Response.Listener<XmlPullParser> listener, Response.ErrorListener errorListener) {        this(0, url, listener, errorListener);    }    @Override    protected Response<XmlPullParser> parseNetworkResponse(NetworkResponse networkResponse){        String xmlString;        try{            //获取到XML数据            xmlString = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers));            //创建XML解析器,并设置数据源为以上获取到的XML数据            XmlPullParserFactory xmlPullParserFactory=XmlPullParserFactory.newInstance();            XmlPullParser xmlPullParser=xmlPullParserFactory.newPullParser();            xmlPullParser.setInput(new StringReader(xmlString));            return Response.success(xmlPullParser, HttpHeaderParser.parseCacheHeaders(networkResponse));        }catch(UnsupportedEncodingException e){            e.printStackTrace();            return Response.error(new ParseError(e));        }catch(XmlPullParserException e){            e.printStackTrace();            return Response.error(new ParseError(e));        }    }    @Override    protected void deliverResponse(XmlPullParser xmlPullParser){        this.listener.onResponse(xmlPullParser);    }}
0 0
原创粉丝点击