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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值