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

事件背景:本人新人一枚,昨天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();...

加上这么一行好了...


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值