码迷,mamicode.com
首页 > 其他好文 > 详细

Volley使用

时间:2016-06-13 23:40:42      阅读:454      评论:0      收藏:0      [点我收藏+]

标签:

Volley

简单使用示例

  1.添加网络访问权限

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

  2.创建一个RequestQueue对象。RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。

    RequestQueue mRequestQueue = Volley.newRequestQueue(context);

  3.发出一条HTTP请求,如创建一个StringRequest对象。StringRequest的构造函数需要传入三个参数,第一个参数就是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。其中,url是我们访问的地址,如http://www.baidu.com,然后在响应成功的回调里打印出服务器返回的内容,在响应失败的回调里打印出失败的详细信息。

  onResponse返回的字符串是用iso8859-1编码的,需要转换为目标编码,才不会出现乱码,百度返回的编码格式为utf-8。onErrorResponse 中返回的VolleyError是Exception子类。这两个方法都是在UI主线程中调用的。

  当然也可以使用4个参数版本的构造方法,其第一个参数指定的请求方式,如果不指定,默认为GET请求。

    public StringRequest(int method, String url, Listener<String> listener, ErrorListener errorListener)

StringRequest request = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                try {
                    s = new String(s.getBytes("iso8859-1"), "utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                Log.d(TAG, s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e(TAG, "E/StringRequest-ErrorListener", volleyError);
            }
        });

  4.将这个StringRequest对象添加到RequestQueue对象里面,这样就可以异步的去连接网络并解析返回的数据。

    mRequestQueue.add(request);

  5.其它Request对象使用

// 下载百度Logo图片
        url = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
        ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                ImageView img = (ImageView) findViewById(R.id.img);
                img.setImageBitmap(bitmap);
            }
        }, 1000, 1000, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e(TAG, "E/ImageRequest-ErrorListener", volleyError);
            }
        });
        mRequestQueue.add(imageRequest);
        // 查询深圳天气 (天气接口使用:http://www.nohacks.cn/post-35.html)
        url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101280601";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                Log.d(TAG, "jsonObjectRequest-onResponse");
                String s = jsonObject.toString();
                try {
                    s = new String(s.getBytes("iso8859-1"), "utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                Log.d(TAG, "" + s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e(TAG, "E/JsonObjectRequest-ErrorListener", volleyError);
            }
        });
        mRequestQueue.add(jsonObjectRequest);

 

Volley使用

标签:

原文地址:http://www.cnblogs.com/diysoul/p/5582400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!