我们在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<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); } }); 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<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("key1", "value1"); map.put("key2", "value2"); return map; } };
StringRequest中并没有提供设置post参数的方法,但是它的父类Request有,因此我们重写父类的getParams()方法
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<JSONObject>() { @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<Bitmap>() { @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加载网络图片