以StringRequest为例:
首先需要获取到一个RequestQueue对象,这是一个请求队列,缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。
RequestQueue mQueue = Volley.newRequestQueue(context);
为了要发出一条HTTP请求,我们还需要创建一个StringRequest对象。参数分别是url,成功返回,失败返回。
StringRequest stringRequest = new StringRequest("http://www.baidu.com",
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);
}
});
最后,将这个StringRequest对象添加到RequestQueue里面。
mQueue.add(stringRequest);
所以说主要代码只有3步:
1、 创建一个RequestQueue对象。
2、创建一个StringRequest对象。
3、将StringRequest对象添加到RequestQueue里面。
HTTP的请求类型通常有两种,GET和POST。刚才使用的是GET,如果需要使用POST则需要指定HTTP请求类型。所以加了一个参数。
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener);
StringRequest中并没有提供设置POST参数的方法,所以会重写StringRequest的父类Request的getParams()方法获取POST参数。
StringRequest request=new StringRequest(Method.POST, postUrl, new Listener<String>() {
@Override
public void onResponse(String response) {
// 数据请求成功返回
Log.e("tony", "VolleyPost");
Log.e("tony", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// 数据请求失败返回
Log.e("tony", error.toString());
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> hashMap=new HashMap<String, String>();
hashMap.put("ip", "202.96.128.146");
return hashMap;
}
};