我们在andorid开发时,基本都是要使用网络通信,网络通信中,HttpURLConnection,HttpClient这两个类很常见,基本上有网络通信
的地方就有他们,但是当我们多次使用时,这两个类还是比较复杂的,特别是HttpClient,因此Volley就应运而生了。
除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操
作,而对于大数据量的网络操作,我们是不会使用Volley的。(Volley的使用是需要导入Volley包的)
一:StringRequest的用法---请求一段普通文本消息
StringRequest的使用分三步走:
1)创建一个RequestQueue对象(请求队列)
2)创建一个StringRequest对象
3)把StringRequest对象添加到RequestQueue(请求队列)中
这样就完成了StringRequest的使用,下面是详细代码
RequestQueue queue = Volley.newRequestQueue(context);//第一步
StringRequest stringRequest = new StringRequest(Method.GET, "通信的url", //第二步
new Response.Listener() {
@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);
}
});
queue.add(stringRequest);//第三步
就是这么简单。
StringRequest中有四个参数,第一个是通信方式,有GET必有POST,第二个是通信的url地址,第三个第四个是通
信的回调,成功了返回值会返回到onResponse中的response参数,失败也如此。
那么Post方式是怎么样的呢?Post你要提交参数给服务器,Post的话StringRequest的创建就要改改
StringRequest stringRequest = new StringRequest(Method.POST, "通信的url", listener, errorListener) {
@Override
protected Map getParams() throws AuthFailureError {
Map map = new HashMap();
map.put("key1", "value1");
map.put("key2", "value2");
return map;
}
};
StringRequest就说完了!
二:JSONRequest的用法---请求一段JSON消息
JSONRequest时抽象类,不能直接实例化,因此从它的子类入手,它的子类有JSONObjectRequest和JSONArrayRequest,两者大
体相同,讲一个就够了,我们发现,JSONObjectRequest,JSONArrayRequest和StringRequest最终都是继承Request的,因此用法
都差不多。
JSONObjectRequest也是三步走
1)创建一个RequestQueue对象(请求队列)
2)创建一个JSONObjectRequest对象
3)把JSONObjectRequest对象添加到RequestQueue(请求队列)中
RequestQueue queue = Volley.newRequestQueue(context);//第一步
JsonObjectRequest jsonRequest = new JsonObjectRequest(Method.GET, "http://www.tuling123.com/openapi/api",第二步
null, new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("TAG", error.toString());
}
});
mQueue.add(jsonRequest);//第三步
Post也是和StringRequest一样,举一反三。
三:ImageRequest的用法---请求一张图片
其实他们最终都是继承Request,因此用法肯定差不多
ImageRequest也是三步走
1)创建一个RequestQueue对象(请求队列)
2)创建一个ImageRequest对象
3)把ImageRequest对象添加到RequestQueue(请求队列)中
RequestQueue queue = Volley.newRequestQueue(context);//第一步
ImageRequest imageRequest = new ImageRequest("http://inews.gtimg.com/newsapp_ls/0/276901406/0", //第二步
new Response.Listener() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
}, 0, 0, Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
imageView.setImageResource(R.drawable.ic_launcher);
}
});
mQueue.add(imageRequest);//第三步
这里ImageRequest的参数要说一下,第二个是请求成功的回调,第三第四指定允许图片的宽度高度,如果指定为0,表示不会压
缩,第五个指定图片的颜色属性,第六个是请求失败的回调
总结:总结很简单,记住我这篇文章讲的这三个的用法都是三步走就够了!
下一篇详细讲解加载图片的具体用法Android Volley网络通信框架的使用(二):Volley加载网络图片