安卓日记——volley常用方法介绍

来源:互联网 发布:淘宝网充话费优惠吗 编辑:程序博客网 时间:2024/05/17 01:05

volley为我们提供了更简单,更快,更健壮的方法来处理一些频繁且小的网络通讯,比如获取json,获取字符串,获取图片

首先导入volley这个jar包


一 获取json

学过安卓网络通信的人都知道http请求有两种方法,get和post,他们的区别不多说

可以直接在oncreate里写,但为了整洁我们通常会新建方法,把内容写在外面的方法里。

注:以下的url和传入的参数要改为自己的

首先新建一个方法

然后实例化一个RequestQueue 

RequestQueue rq=Volley.newRequestQueue(this);
然后如果是gei方法()

JsonObjectRequest jsonObjectRequest =new JsonObjectRequest("http://119.29.136.149:8080/secret.jsp", null, new Response.Listener<JSONObject>() {            @Override            public void onResponse(JSONObject response) {                Log.d("TAG", response.toString());            }        }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {                Log.e("TAG", error.getMessage(), error);            }        });

如果是post方法

 JsonObjectRequest jsonObjectRequest =new JsonObjectRequest(Request.Method.POST, "http://119.29.136.149:8080/secret.jsp", null, new Response.Listener<JSONObject>() {            @Override            public void onResponse(JSONObject response) {                Log.d("TAG", response.toString());            }        }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {                Log.e("TAG", error.getMessage(), error);            }        }){            @Override            protected Map<String, String> getParams() throws AuthFailureError {                Map<String, String> map = new HashMap<String, String>();                map.put("action", "send_pass");                return map;            }        };

就是在参数里加入post方法和多了个getParams方法,把map参数传进去

最后别忘了把这个jsonObjectRequest添加到RequestQueue里,不然不会执行

rq.add(jsonObjectRequest);





二 获取字符串

获取字符串和获取json大同小异,就是onResponse里面返回的参数类型不同而已

get方法获取字符串

 RequestQueue rq=Volley.newRequestQueue(this);        StringRequest stringRequest = new StringRequest("http://119.29.136.149:8080/secret.jsp",                new Response.Listener<String>() {                    @Override                    public void onResponse(String response) {                         Log.d("TAG", response);                                         }                }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {                Log.e("TAG", error.getMessage(), error);            }        });        rq.add(stringRequest);


post方法获取字符串

 private void getJSONVolley() {        RequestQueue rq=Volley.newRequestQueue(this);        StringRequest stringRequest = new StringRequest(Request.Method.POST,"http://119.29.136.149:8080/secret.jsp",                new Response.Listener<String>() {                    @Override                    public void onResponse(String response) {                        Log.d("TAG", response);                    }                }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {                Log.e("TAG", error.getMessage(), error);            }        }){            @Override            protected Map<String, String> getParams() throws AuthFailureError {                Map<String, String> map = new HashMap<String, String>();                map.put("action", "send_pass");                return map;            }        };        rq.add(stringRequest);

三 获取图片
volley给我们提供了一个NetworkImageView控件

实现的方法也比较简单

要先在layout里添加这个控件

然后在主方法里获取这个控件

private NetworkImageView iv2;iv2= (NetworkImageView) findViewById(R.id.iv2);

 String imageurl="http://119.29.136.149:8080/1.jpg";        RequestQueue rq=Volley.newRequestQueue(this);        final LruCache<String,Bitmap> lrucache=new LruCache<String, Bitmap>(20);        ImageLoader.ImageCache imagecache=new ImageLoader.ImageCache() {            @Override            public Bitmap getBitmap(String s) {                return lrucache.get(s);            }            @Override            public void putBitmap(String s, Bitmap bitmap) {                lrucache.put(s,bitmap);            }        };        ImageLoader imageloader =new ImageLoader(rq,imagecache);        iv2.setImageUrl(imageurl,imageloader);    }
这个方法实现了缓存的功能。







0 0
原创粉丝点击