Volley的学习笔记
说明:对于大数据量的网络操作,Volley的表现会比较糟糕,所有对于下载图片和上传文件之类的,最好不扩展Volley进行上传文件操作。
1,上传客户端到服务端的请求头信息:
StringRequest request = new StringRequest(urlValCode, new ValCodeListener(), new ValCodeErrorListener())
{
/**
* 覆盖getHeaders()方法,表示上传请求头信息,Volley封装好之后提供给外界调用的一个方法,它不是必须的。
*/
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
Map<String, String> headMap = new HashMap<String, String>();
headMap.put("User-Agent", getUserAgent());
return headMap;
}
};
requestQueue.add(request);
自己修改源码的方式:
在BasicNetwork类的performRequest方法中修改。将你要添加的头部信息加入到headers集合中;因为看源码可知,不管是HurlStack还是HttpClientStack的performRequest方法,
都必须经过BasicNetwork的performRequest方法中进行调用。或者直接修改getHeaders()方法。
获取相应头的信息,一样可以在BasicNetwork类的performRequest方法中获取,httpResponse = mHttpStack.performRequest(request, headers);其中httpResponse就是你想要的
响应信息。httpResponse.getAllHeaders();就是你想要的所有头信息。
2、请求参数的传递,选择Method.POST方法:
StringRequest loginRequest = new StringRequest(Method.POST,urlLogin, new LoginListener(), new ValCodeErrorListener())
{
@Override
protected Map<String, String> getParams() throws AuthFailureError
{
Map<String, String> paramsMap = new HashMap<String, String>();
headMap.put("xxxxx", "xxxxx");
return paramsMap;
}
};
requestQueue.add(loginRequest);
3、http请求,如果要保持客户端与服务端每次的请求与响应的Cookie JSESSIONID一致,则客户端每次接收完服务端的响应之后,必须先保存改响应回来的Cookie JSESSIONID,等到下次
请求的时候再把该JSESSIONID放在请求头发送给服务端。
4、加载图片:加载图片暂时还是不选择Volley,因为其没有处理OOM异常情况。可以使用Android-Universal-Image-Loader-master;