一、前言
Volley框架它非常适合去进行数据量不大,但是通信频繁的网络操作,而对于下载文件、处理大图片等,Volley是不太适合的。
二、初始化请求对象——-RequestQueue
public class MainApplication extends Application {
private static MainApplication mainApplication;
private RequestQueue requestQueue;@Override public void onCreate() { super.onCreate(); mainApplication = this; requestQueue = Volley.newRequestQueue(this); } public static MainApplication getMainApplication() { return mainApplication; } public RequestQueue getRequestQueue() { return requestQueue; } }
Http操作,既有请求也有响应,RequestQueue是一个请求队列,它可以缓存所有的HTTP请求,然后按照一定的算法并发的发送请求。RequestQueue内部是高并发的,所以我们不用每有一个请求,就创建一个RequestQueue队列。所以我把它写在Application里,用单例模式简历了这个对象。MainApplication.getMainApplication().getRequestQueue()就可以得到这个RequestQueue队列。
三、使用StringRequest接收String类型的响应
3.1 初始化
有了请求对象,我们还需要有一个响应对象。Volley框架有许多响应类型的对象,StringRequest接收到的响应对象就是String类型的。
public StringRequest(int method, String url, Response.Listener listener, Response.ErrorListener errorListener) {
super(method, url, listener, errorListener);
}
public StringRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(url, listener, errorListener);
}
这是StringRequest的两个构造函数,一个在参数里传入了method方法,可以进行设置post和get方法,而没有设置这个参数的默认执行Get方法。
参数说明:
url:请求的地址
listener:响应成功的监听器
errorListener:出错时的监听器
3.2 设置监听
StringRequest request=new StringRequest(“http://baidu.com“, new
Response.Listener() {
@Override
public void onResponse(String s) {
Toast.makeText(this, “连接成功!”,Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(this, “连接失败!”,Toast.LENGTH_SHORT).show();
}
}
});
四、执行请求:
执行请求,就是把响应对象添加到请求队列就可以了。
MainApplication.getMainApplication().getRequestQueue().add(request);