HttpClient Post/GetMethod 转码方案汇总

HttpClient Post  方式模拟请求时常会遇到中文转码问题,这里我总结一下自己遇到的几种情况和解决方案。

1、请求网页

GetMethod getMethod = new GetMethod("http://www.baidu.com");  
//(1)、这里可以设置自己想要的编码格式
getMethod.getParams().setContentCharset("GB2312"); 

//(2)、对于get方法也可以这样设置 
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"GB2312");  

//(3)、还可以如下这样设置
getMethod.addRequestHeader("Content-Type", "text/html; charset=UTF-8");  
 
//(4)、当然同样可以直接设置 httpClient 对象的编码格式
HttpClient httpClient = new HttpClient();
httpClient.getParams().setContentCharset("GB2312");

//使用流的方式读取也可以如下设置
InputStream in = getMethod.getResponseBodyAsStream();  
//这里的编码规则要与上面的相对应  
BufferedReader br = new BufferedReader(new InputStreamReader(in,"GB2312"));

2、请求方法

PostMethod PostMethod= new PostMethod("http://localhost:8080/ezid-cert-mobile/upload");
//(1)、通常可以如下设置自己想要的编码格式
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");

//(2)、也重载PostMethod的getRequestCharSet()方法
public  class UTF8PostMethod extends PostMethod{
    public UTF8PostMethod(String url){
        super(url);
    }
    @Override
    public String getRequestCharSet() {
     return "UTF-8";
    }
}

//(3)、如果是方法的参数出现乱码问题,那么你可以如下设置参数
Charset utf8Charset = Charset.forName("UTF-8");
multipartContent.addPart("name", new StringBody(Info.getUserEntity().getName(), utf8Charset));

//(4)、如果你用的是Part [] parts={...}传参方式的话可以如下设置
StringPart name=new StringPart("name",certFormEntity.getPersonName(), "UTF-8");



转载于:https://my.oschina.net/CandyDesire/blog/201759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值