标签:
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);
标签:
原文地址:http://www.cnblogs.com/diysoul/p/5582400.html