Android网络请求框架-----Volley

来源:互联网 发布:nba2kolsf特训全十数据 编辑:程序博客网 时间:2024/05/09 15:30

Android应用不可避免用到网络技术,多数情况程序会使用http发送和接收网络数据。Android主要提供了两种方式来进行Http通信,HttpUrlConnection和HttpClient,2013年Google推出新的网络请求框架---Volley

-------Get请求方式--------

1:需要获得一个RequestQueue对象

这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的Http请求,然后按照一定的算法并发的发出这些请求。

RequestQueue mQueue=Volley.newRequestQueue(Context);

2:想要发出一条Http请求,还需要创建一个StringRequest对象

这里new出了一个新的StringRequest对象,StringRequest的构造函数需要传入三个参数,

第一个参数目标服务器的Url地址;

第二个参数是服务器响应成功的回调;

第三个参数是服务器响应失败的回调;

  1. StringRequest stringRequest = new StringRequest("http://www.baidu.com",  
  2.                         new Response.Listener<String>() {  
  3.                             @Override  
  4.                             public void onResponse(String response) {  
  5.                                 Log.d("TAG", response);  
  6.                             }  
  7.                         }, new Response.ErrorListener() {  
  8.                             @Override  
  9.                             public void onErrorResponse(VolleyError error) {  
  10.                                 Log.e("TAG", error.getMessage(), error);  
  11.                             }  
  12.                         }); 

在成功与失败的回调方法中分别进行所需要的功能的实现;

3:将StringRequest对象添加到RequestQueue里面就Ok了;

mQueue.add(stringRequesrt);

注:由于Volley要访问网络,因此要记得添加网络权限

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

-------Post请求方式--------

Http的请求类型通常有两种,Get请求和Post请求;StringRequest中还提供了另外一种四个参数的构造函数,其中第一个参数就是指定请求类型的。我们可以用如下方式进行指定:

StringRequest mRequest=new StringRequest(Method.POST, url,  listener, errorListener);

这里只是指定了Http的请求方式是post,提交服务器的参数要如何设置呢?StringRequest中并没有提供设置post参数的方法。

当发出post请求时,Volley会尝试调用StringRequest的父类,Request中的getParams()方法来获取post参数,那么我们就需要在StringRequest的匿名类里重写getParams()方法,在这里设置post参数就Ok了。

  1. StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener) {  
  2.     @Override  
  3.     protected Map<String, String> getParams() throws AuthFailureError {  
  4.         Map<String, String> map = new HashMap<String, String>();  
  5.         map.put("params1""value1");  
  6.         map.put("params2""value2");  
  7.         return map;  
  8.     }  
  9. }; 

0 0
原创粉丝点击