今天些项目发现:
Volley 请求参数默认是无法为null的,如果传入的参数为null,会进入失败的回调方法中.
而实际上我希望参数可以为null,因为即使是null服务器也是可以返回数据的.我不希望调用连接失败的回调方法中.
于是在Volley源码的request中修改了下面方法,在拼接value的时候加了一层判断:
<del>private byte[] encodeParameters(Map<String, String> params, String paramsEncoding) {
StringBuilder encodedParams = new StringBuilder();
try {
for (Map.Entry<String, String> entry : params.entrySet()) {
encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));
encodedParams.append('=');
//加了一层判断
encodedParams.append(URLEncoder.encode(entry.getValue()==null ? "":entry.getValue(), paramsEncoding));
encodedParams.append('&');
}
return encodedParams.toString().getBytes(paramsEncoding);
} catch (UnsupportedEncodingException uee) {
throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);
}
}</del>
这样便达到想要的效果了