关于httpclient3 postMethod乱码问题解决方法

今天在我们项目中做了一个功能,在线接口测试。是用httpClient调用的:


String url = getUrlByParam(argsMap, removeStrs);
methodBase = this.requestPostMethod(url, pairs);
HttpClient client = new HttpClient();
client.executeMethod(methodBase);

然后传递给接口的参数中含有乱码,调试后发现在页面传递给pairs的时候都是正确的,但是返回的methodBase却是乱码

于是上网搜了下有三种方式解决乱码问题:

第一种:client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");

第二种:重写PostMethod接口


public static class UTF8PostMethod extends PostMethod{
        public UTF8PostMethod(String url){
            super(url);
        }
        @Override
        public String getRequestCharSet() {
            return "UTF-8";
        }
    }


然后再:


PostMethod method = new UTF8PostMethod(url);
method.setRequestBody(pairs);
return method;


第三种:


method.getParams().setContentCharset("UTF-8"); 
method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");


结果我都试了,还是不行,可能我太悲剧了吧...然后继续搜,说什么httpclient3不支持中文,默认采用ISO8859-1,我一看源码原来就是.但是还是没有找到解决办法...

最好惹毛了...果断换版本,用httpClient4试下,但是代码的写法完全变了..只有重写了...


List<NameValuePair> params = this.getListParam(argsMap);  
String url = getUrlByParam(argsMap, removeStrs);
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));  
HttpResponse httpResponse = httpclient.execute(httpPost);
String value = EntityUtils.toString(httpResponse.getEntity());


调试下...OH...居然成功了是中文了....
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值