您的位置:首页 > 理论基础 > 计算机网络

完美解决Multipart EntityBuilder.addtextbody && http entity中文乱码

2016-09-16 23:13 302 查看
事件背景:本人新人一枚,昨天debug,公司要做个本地测试功能,测试服务器及APP抗压能力,写了一段代码调用网站接口,但坑爹的是我使用HttpPost请求模拟移动端向服务器请求数据,纯英文请求完美通过,只要一涉及到中文请求,就是各种问号(乱码),各种招都用了,这乱码就是改不掉,改了2天,总算搞定了。

网上关于解决MultipartEntityBuilder.addtextbody中文乱码的有很多,但我基本上试遍了,就是无法解决。

比如网上有说使用addPart+ StringBody代替addTextBody,解决中文乱码的

// builder.addTextBody(entry.getKey(), entry.getValue());

ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);

StringBody stringBody = new StringBody(entry.getValue(),contentType);

builder.addPart(entry.getKey(), stringBody);

这个方法以前或许成立但现在就不行了,HTTP.PLAIN_TEXT_TYPE和HTTP.UTF_8两个属性过时,使用后无效果。

有这么用的

stringEntity.setContentEncoding(
"utf-8"
)
 照样没用。


UrlEncodedFormEntity
formEntity = new UrlEncodedFormEntity(valuePairs, "utf-8");


 这个可以解决非MultipartEntityBuilder类型上传的乱码问题。

折腾2天,发现可以这么解决:
ContentType contentType = ContentType.create("text/plain",Charset.forName("UTF-8"));
HttpEntity caiJiEntity= MultipartEntityBuilder.create()
.addBinaryBody("file", new File("d://2.mp4"), ContentType.create("video/mp4"), "2.mp4")

.addBinaryBody("file1",new
File("d:/1-120915094151.jpg"),


 ContentType.create("image/jpg"),
"1-120915094151.jpg")


.addTextBody("mtxs",
"三面立柱",contentType)


.build();...

加上这么一行好了...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息