`
yhq1212
  • 浏览: 82436 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

HttpClient]HTTPClient PostMethod 中文乱码问题解决方案(2种)

    博客分类:
  • java
 
阅读更多
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上传文件中文乱码问题解决办法代码示例

    服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。

    彻底解决httpClient乱码问题

    本文将深入探讨如何使用HttpClient来彻底解决乱码问题。 HttpClient是一个功能强大的HTTP客户端,支持多种HTTP协议版本,包括GET、POST等请求方法,以及重试、连接管理等功能。在处理中文字符时,由于编码不一致...

    HttpClient、乱码解决:实例

    4. 自定义解码:如果以上方式无法解决问题,可以自定义解码逻辑,如使用`InputStreamReader`和`BufferedReader`手动读取字节流并指定字符集。 四、示例代码 以下是一个简单的使用HttpClient发送GET请求并处理乱码的...

    HttpClient PostMethod 上传文件

    在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...

    HttpClient4.2.5上传文件,无中文文件名乱码问题

    HttpClient4.2.5实现文件上传,无中文文件名乱码问题。亲测无问题。有问题可吐槽!

    解决HttpClient中文乱码问题jar文件

    以下是一些解决HttpClient中文乱码问题的关键知识点: 1. **设置字符编码**:在发送HTTP请求时,我们需要确保请求头中的`Content-Type`字段指定了正确的字符集,如`application/x-www-form-urlencoded; charset=UTF...

    Httpclient使用jar包三合一,基本使用方法

    PostMethod method = new PostMethod(str1); try { // 需要添加的header数据 List<Header> headers = new ArrayList(); headers.add(new Header("", "")); headers.add(new Header("", "")); ...

    httpclient官网教程中文版

    ### Httpclient官网教程中文版知识点总结 #### 一、引言 HTTP协议作为互联网的核心通信标准之一,在现代网络服务及物联网设备中扮演着至关重要的角色。随着技术的发展,越来越多的应用和服务依赖于HTTP协议来实现...

    httpclient-4.5.3 api 中文版

    这在处理网络不稳定或暂时性服务器问题时非常有用。 5. **Cookie管理**:HttpClient 的`CookieStore`和`CookiePolicy`接口帮助管理Cookie,支持标准的Cookie协议,并能根据策略决定接受哪些Cookie。 6. **认证**:...

    httpclient-4.5.3中文版文档,很实用

    2. **连接管理**:HttpClient提供了`HttpConnectionManager`接口,用于管理到服务器的连接。默认实现`PoolingHttpClientConnectionManager`支持连接池,有效利用和重用TCP连接,降低延迟。 3. **请求和响应构建器**...

    httpclient-4.5.3官方API中文文档_最新译版_2886K

    《HttpClient 4.5.3官方API中文文档详解》 HttpClient是Apache软件基金会下的一个开源项目,主要用于构建HTTP客户端应用程序,提供了丰富的功能和强大的性能。本文将基于4.5.3版本的HttpClient官方API中文文档,...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...

    可用org.apache.commons.httpclient-3.1.0.jar.zip

    import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;...

    httpclient.jar包下载

    5. **异步和同步模式**:HttpClient提供同步和异步两种操作模式,适应不同场景的需求。 提到code.jar包,这通常是指包含代码实现的库文件,可能包含了HttpClient的额外功能或者特定项目中的自定义代码。在某些情况...

    httpclient-4.5.6-API文档-中文版.zip

    标签:apache、httpcomponents、httpclient、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...

    httpclient-4.2.5-API文档-中文版.zip

    标签:apache、httpcomponents、httpclient、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...

    HttpClient

    2. **构建 PostMethod**:使用 `PostMethod(String url)` 构造函数创建 PostMethod 对象。 3. **设置请求参数**:通过 `NameValuePair` 类来构建请求参数,并使用 `PostMethod.setRequestBody(NameValuePair[] ...

    commons-httpclient-3.1jar包

    五、常见问题与解决方案 1. 连接超时:可以调整HttpConnectionManager的超时参数,避免请求等待过长。 2. 空闲连接回收:设置合理的KeepAlive策略,防止内存泄露。 3. SSL证书问题:处理自签名或不受信任的证书,...

    HttpClient中文文档,快速开发

    这个标题"HttpClient中文文档,快速开发"表明我们有了一份关于HttpClient的中文版使用指南,对于快速理解和应用HttpClient进行开发来说非常有价值。 HttpClient允许开发者执行各种HTTP方法,如GET、POST、PUT、...

    HttpClientHelper 工具类

    综上所述,HttpClientHelper 是一个实用的HTTP客户端工具类,结合了HttpClient的强大功能和单例模式的高效管理,为C#开发者提供了便捷的网络请求解决方案,特别适合于爬虫开发和需要频繁进行HTTP通信的项目。

Global site tag (gtag.js) - Google Analytics