HttpClient PostMethod/GetMethod 转码方案

来源:互联网 发布:docker容器连接数据库 编辑:程序博客网 时间:2024/05/22 05:16

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");


0 0
原创粉丝点击