一种HttpClient发送post请求后响应中出现中文乱码问题的解决方法

采用httpClient通过post方式发送json数据时遇到响应是乱码的问题,返回的响应中文部分是乱码,发送端原代码如下:

public static void sendJsonByPost() throws Exception {   
    CloseableHttpClient httpClient = HttpClients.createDefault();   
    String url = "xxx";
	HttpPost httpPost = new HttpPost(url);
	httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
	httpPost.setHeader("Accept","application/json");
	JSONObject j = new JSONObject();
	j.put("key", "value");
	StringEntity se = new StringEntity(j.toString());
	se.setContentType("text/json");
	httpPost.setEntity(se);
	HttpResponse response=httpClient.execute(httpPost);
	if(response != null && response.getStatusLine().getStatusCode() == 200) {
		String result = EntityUtils.toString(response.getEntity());
		JSONObject obj = JSONObject.parseObject(result);
    }
}

获取到result之后发现响应里中文部分是乱码,分析发现是此句话:

String result = EntityUtils.toString(response.getEntity());

在toString的时候未指定字符集引起,因接收端采用的utf-8,遂将上述代码改为:

String result = EntityUtils.toString(response.getEntity(),"UTF-8");

修改后返回结果中无乱码。

此方法仅适用于此种响应结果EntityUtils转字符串时出现中文乱码的情况,若为post请求参数中存在中文导致的乱码需要另外讨论解决。

--end--

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值