httpClient中文乱码问题解决

Posted on

httpClient中文乱码问题解决

kangojian

2008-06-24 14:55
我在尝试着直接将中文改变为utf-8的字符串直接写入,失败后!以为是网络传输中应该是iso-8859-1方式传输的,然后将中文转为该编码格式,还是失败后,看httpclient源代码发现:重写postmethod中的getrequestcharset()方法,虽然源代码中该方法动态的设置编码格式,但是好像并没有很好的执行!在重写后,问题解决! 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 = “///////”; 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"; } } }

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途