確定傳輸的參數的字符串是以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