确定传输的参数的字符串是以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