在Volley请求中,我们会遇到通过Volley请求时返回的数据是乱码的,这个问题对于我来说非常地头疼,于是我到网上寻找合适的解决方案。终于发现一个比较简单的解决方法,只需一个方法就可以解决请求乱码了。现在,我就给大家分享一下关于Volley请求返回数据乱码处理,大家可以参考一下。
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String string = new String(response.data, "UTF-8");
return Response.success(string,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (Exception je) {
return Response.error(new ParseError(je));
}
}
以上这些代码大家放到这里就行了,下面是用了乱码处理的Volley的Get请求方法:
private void doGet(String url, Map<String,String> params, final IContact.IModel iModel){
//整合参数
StringBuffer buffer = new StringBuffer();
buffer.append("?");
for (String key : params.keySet()) {
buffer.append(key + "=" + params.get(key) + "&");
}
//去截取,并为url添加参数
String substring = buffer.substring(0, buffer.length() - 1);
url = url + substring;
//调用请求方法
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//打印日志并反馈
Log.i("Tag", "请求成功!\n" + response);
iModel.requestSuccess(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//打印日志并反馈
Log.i("Tag", "请求失败!\n" + error.getMessage());
iModel.requestError(error.getMessage());
}
}) {
//乱码的处理
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String string = new String(response.data, "UTF-8");
return Response.success(string,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (Exception je) {
return Response.error(new ParseError(je));
}
}
};
//添加请求队列
queue.add(stringRequest);
}
Volley请求的代码仅供参考。
就是短短的几行代码,就可以解决请求结果乱码问题,是不是非常的nice呢。
好了,分享就到这里了,感兴趣的话可以收藏呦。