httpClient中文乱码问题解决(wap提交)
package pro;import java.io.IOException;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclient.methods.PostMethod;public class simulateWebAction { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String url = "http://wap.aibang.com:80/search.jsp;jsessionid=acITUg0h_0y8?city=%E8%8B%8F%E5%B7%9E&as=3000&p=1&pn=5&ip=58.211.115.116&s=sbiz"; PostMethod postMethod = new UTF8PostMethod(url); StringBuilder origin = new StringBuilder(); origin.setLength(0); HttpClient httpClient = new HttpClient();// getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); NameValuePair a = new NameValuePair("a","东港"); NameValuePair q = new NameValuePair("q","餐厅"); NameValuePair[] param = new NameValuePair[]{a,q}; postMethod.setRequestBody(param); try {// 执行getMethod int statusCode = httpClient.executeMethod(postMethod); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: "+ postMethod.getStatusLine()); }else{// 读内容 System.out.println(postMethod.getResponseBodyAsString()); } } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ postMethod.releaseConnection(); } } public static class UTF8PostMethod extends PostMethod{ public UTF8PostMethod(String url){ super(url); } @Override public String getRequestCharSet() { //return super.getRequestCharSet(); return "UTF-8"; } } 我在尝试着直接将中文改变为utf-8的字符串直接写入,失败后!以为是网络传输中应该是iso-8859-1方式传输的,然后将中文转为该编码格式,还是失败后,看httpclient源代码发现:重写postmethod中的getrequestcharset()方法,虽然源代码中该方法动态的设置编码格式,但是好像并没有很好的执行!在重写后,问题解决!
页:
[1]