Volley的使用(二)
刚说完夜深了,狗都睡了,邻居的小狗又开始狺狺狂吠了,都这个点了,洗洗睡吧,接着上文详解。
HttpProcessManager,一般的网络框架都可以封装到这个类里面,先声明一个单例,接着放写StringRequest的请求函数。
public class HttpProcessManager {
public static HttpProcessManager instance = null;
public static HttpProcessManager getInstance() {
if (null == instance) {
synchronized (HttpProcessManager.class) {
if (null == instance) {
instance = new HttpProcessManager();
}
}
}
return instance;
}
public StringRequest loginUser(String url, final String user_telno, final String user_pass) {
StringRequest request = new StringRequest(Request.Method.POST, url,
new Response.Listener() {
@Override
public void onResponse(String arg0) {
//这里处理返回的结果,http200的时候,一般接口都会给你返回个Json串,你愿意怎么解析就怎么解析
return;
}
}
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
//网络出错看这里,打日志,写异常,都随你
return;
}
}) {
@Override
protected Map
<String, String> getParams() throws AuthFailureError {
//传递参数
Map <String, String> map = new HashMap <String, String>();
map.put(Constant.TELNO, user_telno);
map.put(Constant.PASS, user_pass);
return map;
}
};
return request;
}
}
#### 代码量稍微有点多(?),前面声明单例,中间创建队列,最后说一下,这里使用的是POST方法,最少需要封装一个map去传递参数,Volley使用post是稍微有点怪,不过还好,其他的方法直接复制粘贴即可。
#### VolleyManager代码量稍微少点,
public class VolleyManager {
public class VolleyManager {
private RequestQueue mRequestQueue;
private static Context context;
public static VolleyManager instance = null;
private VolleyManager(Context context) {
this.context = context;
mRequestQueue = getRequestQueue();
}
public static VolleyManager getInstance(Context context) {
if (null == instance) {
synchronized (VolleyManager.class) {
if (null == instance) {
instance = new VolleyManager(context);
}
}
}
return instance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(context.getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}
}
}
VolleyManager先声明单例,接着声明获取VolleyManager的单例方法,然后获取队列,最后添加到队列。
最后简单说一下Constant类,顾名思义,存放常亮的类,HOST,CODE,等等,固定内容,会频繁重复使用的东西都可以放到这里,个人习惯将网络请求的URL放在Constant,也见过将URL存在HttpProcessManager里的,因人而异吧,感觉都可以,看你习惯是常亮类内容乱一点,还是网络类内容乱一点。最后再注意一下:
private static String HOST = "http://xxxx.xxxx.xxxx/";
private static String USER_LOGIN = "User/login";
public static String HOST_USER_LOGIN = HOST + USER_LOGIN;