HTTPClient PostMethod 中文乱码问题解决方案(2种)
http://blog.csdn.net/apei830/article/details/5526236
Apache HttpClient ( http://jakarta.apache.org/commons/httpclient/ ) 是一个纯 Java 的HTTP 协议的客户端编程工具包, 对 HTTP 协议的支持相当全面, 更多细节也可以参考IBM 网站上的这篇文章 HttpClient入门 (http://www.ibm.com/developerworks/cn/opensource/os-httpclient/ ).
不过在实际使用中, 还是发现按照最基本的方式调用 HttpClient 时, 并不支持 UTF-8 编码。
现在给出2个解决方案:
一、在调用PostMethod方法时设置字符编码:
view plaincopy to clipboardprint?
PostMethod postMethod = new PostMethod(
"http://127.0.0.1:8080/HttpClientServer/login.do");
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");
PostMethod postMethod = new PostMethod(
"http://127.0.0.1:8080/HttpClientServer/login.do");
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");
二、重载PostMethod的getRequestCharSet()方法, 返回我们需要的编码(字符集)名称, 就可以解决 UTF-8 或者其它非默认编码提交 POST 请求时的乱码问题了.
view plaincopy to clipboardprint?
//Inner class for UTF-8 support
public static class UTF8PostMethod extends PostMethod{
public UTF8PostMethod(String url){
super(url);
}
@Override
public String getRequestCharSet() {
//return super.getRequestCharSet();
return "utf-8";
}
}
//Inner class for UTF-8 support
public static class UTF8PostMethod extends PostMethod{
public UTF8PostMethod(String url){
super(url);
}
@Override
public String getRequestCharSet() {
//return super.getRequestCharSet();
return "utf-8";
}
}
view plaincopy to clipboardprint?
PostMethod postMethod = new UTF8PostMethod(
"http://127.0.0.1:8080/HttpClientServer/login.do");
PostMethod postMethod = new UTF8PostMethod(
"http://127.0.0.1:8080/HttpClientServer/login.do");
三、最后服务器端要配合客户端,设置下编码字符集:
view plaincopy to clipboardprint?
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//解决中文乱码问题,此步不可少
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String username = (String) request.getParameter("username");
String password = (String) request.getParameter("password");
System.out.println("******************** doPost被执行了 ********************");
System.out.println("您的请求参数为:/tusername:" + username + "/tpassword:"
+ password);
out.print("您的请求参数为:/tusername:" + username + "/tpassword:" + password);
out.flush();
out.close();
}
分享到:
相关推荐
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
本文将深入探讨如何使用HttpClient来彻底解决乱码问题。 HttpClient是一个功能强大的HTTP客户端,支持多种HTTP协议版本,包括GET、POST等请求方法,以及重试、连接管理等功能。在处理中文字符时,由于编码不一致...
4. 自定义解码:如果以上方式无法解决问题,可以自定义解码逻辑,如使用`InputStreamReader`和`BufferedReader`手动读取字节流并指定字符集。 四、示例代码 以下是一个简单的使用HttpClient发送GET请求并处理乱码的...
在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...
HttpClient4.2.5实现文件上传,无中文文件名乱码问题。亲测无问题。有问题可吐槽!
以下是一些解决HttpClient中文乱码问题的关键知识点: 1. **设置字符编码**:在发送HTTP请求时,我们需要确保请求头中的`Content-Type`字段指定了正确的字符集,如`application/x-www-form-urlencoded; charset=UTF...
PostMethod method = new PostMethod(str1); try { // 需要添加的header数据 List<Header> headers = new ArrayList(); headers.add(new Header("", "")); headers.add(new Header("", "")); ...
这在处理网络不稳定或暂时性服务器问题时非常有用。 5. **Cookie管理**:HttpClient 的`CookieStore`和`CookiePolicy`接口帮助管理Cookie,支持标准的Cookie协议,并能根据策略决定接受哪些Cookie。 6. **认证**:...
2. **连接管理**:HttpClient提供了`HttpConnectionManager`接口,用于管理到服务器的连接。默认实现`PoolingHttpClientConnectionManager`支持连接池,有效利用和重用TCP连接,降低延迟。 3. **请求和响应构建器**...
《HttpClient 4.5.3官方API中文文档详解》 HttpClient是Apache软件基金会下的一个开源项目,主要用于构建HTTP客户端应用程序,提供了丰富的功能和强大的性能。本文将基于4.5.3版本的HttpClient官方API中文文档,...
import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;...
《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...
5. **异步和同步模式**:HttpClient提供同步和异步两种操作模式,适应不同场景的需求。 提到code.jar包,这通常是指包含代码实现的库文件,可能包含了HttpClient的额外功能或者特定项目中的自定义代码。在某些情况...
标签:apache、httpcomponents、httpclient、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
标签:apache、httpcomponents、httpclient、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
2. **构建 PostMethod**:使用 `PostMethod(String url)` 构造函数创建 PostMethod 对象。 3. **设置请求参数**:通过 `NameValuePair` 类来构建请求参数,并使用 `PostMethod.setRequestBody(NameValuePair[] ...
### Httpclient官网教程中文版知识点总结 #### 一、引言 HTTP协议作为互联网的核心通信标准之一,在现代网络服务及物联网设备中扮演着至关重要的角色。随着技术的发展,越来越多的应用和服务依赖于HTTP协议来实现...
五、常见问题与解决方案 1. 连接超时:可以调整HttpConnectionManager的超时参数,避免请求等待过长。 2. 空闲连接回收:设置合理的KeepAlive策略,防止内存泄露。 3. SSL证书问题:处理自签名或不受信任的证书,...
这个标题"HttpClient中文文档,快速开发"表明我们有了一份关于HttpClient的中文版使用指南,对于快速理解和应用HttpClient进行开发来说非常有价值。 HttpClient允许开发者执行各种HTTP方法,如GET、POST、PUT、...
综上所述,HttpClientHelper 是一个实用的HTTP客户端工具类,结合了HttpClient的强大功能和单例模式的高效管理,为C#开发者提供了便捷的网络请求解决方案,特别适合于爬虫开发和需要频繁进行HTTP通信的项目。