xutils3 getQueryStringParams天坑

org.xutils.http.RequestParams.getQueryStringParams
org.xutils.http.RequestParams.getStringParams
本文讲的是这两个方法

最初的想法是想打出post请求中所有的kv,翻看了源码找到了getQueryStringParams这个方法,toString之后实测没问题

项目上线之后反馈图片上传失败

抓包后发现所有的post请求,将参数拼接到了url之后,例如正常请求url为 https://****.com/image
实际请求url为https://****.com/image?img_content=data%3Aimage%2Fjpeg%3Bbase64%2C%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wBD............
由于接口中上传图片是将图片base64后作为参数传递,将超长的参数拼接到url之后,ngix报错
HttpRequest.sendRequest(L:249): errorCode: 414, msg: Request-URI Too Large, result:
414 Request-URI Too Large

414 Request-URI Too Large



nginx/1.12.2



Request-URI Too Large - uri超长报错

后来改为使用getStringParams,接口恢复正常

两个方法的源码:

public List getQueryStringParams() {
checkBodyParams();
return new ArrayList(queryStringParams);
}

public List getStringParams() {
List result = new ArrayList(
queryStringParams.size() + bodyParams.size());
result.addAll(queryStringParams);
result.addAll(bodyParams);
return result;
}

Tips:当需要一个功能的时候api文档中没有相应的介绍,翻看源码是正确的,但也要详细看清楚想要用的那个public方法里有没有坑

你可能感兴趣的:(xutils3 getQueryStringParams天坑)