我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient,Volley等,但是Volley有它独有的优点,Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
在这里归纳一下,Volley通过get和post进行网络通信的用法。
首先定义一个全局变量private RequestQueue mRequestQuene;
然后对它进行初始化mRequestQuene=Volley.newRequestQueue(this);
当有get请求时StringRequest request=new StringRequest(url,listener,errorlistener); 这里的url是访问的网络资源的地址,listener是访问成功的监听,而errorlistener是访问失败时的监听,这样再把这个请求添加到请求队列中即可。
StringRequest request=new StringRequest(
"http://www.baidu.com",
//成功的话做的事
new Listener<String>() {
@Override
public void onResponse(String arg0) {
text.setText(arg0);
}
},
//不成功的监听
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
Toast.makeText(VolleyActivity.this,"网络已断开",Toast.LENGTH_LONG).show();
}
});
mRequestQuene.add(request);
而post请求与get请求类似,只是post请求可以向服务器端传输数据,进行交互。
PostStringRequest postRequest=new PostStringRequest(
Method.POST,
"http://www.baidu.com",
new Listener<String>() {
@Override
public void onResponse(String arg0) {
text.setText(arg0);
}
},
new ErrorListener() {
@Override
public void onErrorResponse(
VolleyError arg0) {
Toast.makeText(VolleyActivity.this,"网络已断开",Toast.LENGTH_LONG).show();
}
},
map);
mRequestQuene.add(postRequest);
在这里的PostStringRequest是自定义的一个Request,这个类里面提供了一些post提交方式的方法等。
public class PostStringRequest extends StringRequest {
private Map<String, String> map;
public PostStringRequest(int method, String url, Listener<String> listener,
ErrorListener errorListener) {
super(method, url, listener, errorListener);
}
public PostStringRequest(String url, Listener<String> listener,
ErrorListener errorListener) {
super(url, listener, errorListener);
}
public PostStringRequest(int method, String url, Listener<String> listener,
ErrorListener errorListener,Map<String, String> map) {
super(method, url, listener, errorListener);
this.map=map;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}