转载至:http://blog.csdn.net/cym492224103/article/details/38677063
1.Volley中使用过程中会遇到的坑。
(1)服务器返回数据为乱码;<解决办法> 重写parseNetworkResponse方法改变返回头参数解决乱码问题,主要是看服务器编码,如果服务器编码不是UTF-8的话那么就需要自己转换,反之则不需要 。
伪代码:
- private void loadGetStr(String url) {
- StringRequest srReq = new StringRequest(Request.Method.GET, url,
- new StrListener(), new StrErrListener()) {
- protected final String TYPE_UTF8_CHARSET = "charset=UTF-8";
- // 重写parseNetworkResponse方法改变返回头参数解决乱码问题
- // 主要是看服务器编码,如果服务器编码不是UTF-8的话那么就需要自己转换,反之则不需要
- @Override
- protected Response<String> parseNetworkResponse(
- NetworkResponse response) {
- try {
- String type = response.headers.get(HTTP.CONTENT_TYPE);
- if (type == null) {
- type = TYPE_UTF8_CHARSET;
- response.headers.put(HTTP.CONTENT_TYPE, type);
- } else if (!type.contains("UTF-8")) {
- type += ";" + TYPE_UTF8_CHARSET;
- response.headers.put(HTTP.CONTENT_TYPE, type);
- }
- } catch (Exception e) {
- }
- return super.parseNetworkResponse(response);
- }
- };
- srReq.setShouldCache(true); // 控制是否缓存
- startVolley(srReq);
- }
其中startVolley函数代码为:
- // 添加及开始请求
- private void startVolley(Request req) {
- // 设置超时时间
- // req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1, 1.0f));
- // 将请求加入队列
- mQueue.add(req);
- // 开始发起请求
- mQueue.start();
- }