HttpClient通过POST方式访问webservice服务,参数中的中文乱码

确定传输的参数的字符串是以utf-8形式,接收的返回字符流也转为了utf-8,但是返回的字符串中包含的传过去的参数中的中文却是???的形式

最后确定应该是传输过程中的编码问题,也就是httpClient的编码,在网上查发现有几种方式

1. GET

  • GETMethod的setQueryString方法设置QueryString
    第一种方式
public void setQueryString(NameValuePair[] params){  
    queryString = EncodingUtil.formUrlEncode(params, "UTF-8");  
} 

第二种方式

public void setQueryString(String queryString){  
     this.queryString = queryString;  
}

其中queryString是以某种charset编码后的字符串

  • GETMethod的构造函数,直接设置URLEncode之后的uri
public GetMethod(String uri) {  
    super(uri);  
    LOG.trace("enter GetMethod(String)");  
    setFollowRedirects(true);  
} 

2.POST

  • 在POST请求中的Header中设置Content-Type
PostMethod method = new PostMethod();  
method.addRequestHeader("Content-Type","text/html;charset=UTF-8"); 
  • 设置HttpClientParam的ContentCharset
HttpClient httpClient = new HttpClient();  
HttpClientParam params = httpClient.getParams();  
params.setContentCharset("UTF-8"); 
  • 设置HttpMethodParams的ContentCharset
PostMethod method = new PostMethod();  
HttpMethodParams params = method.getParams();  
params.setContentCharset("UTF-8"); 

如果都没有设置的话默认的是ISO-8859-1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容