`

HttpClient中文乱码问题

 
阅读更多

服务端Servlet代码:

package com.httpclient.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpClientServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("GBK");
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		System.out.println(username);
		PrintWriter writer = resp.getWriter();
		writer.print(username + " = " + password);
		writer.close();
	}
}

 

HttpClient客户端代码:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.chinapay.client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class HttpClientPost {

    public static void main(String[] args) throws IOException{
        HttpClient client = new HttpClient();
        client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
        String url = "http://localhost:8080/httpclient/HttpClientServlet";
        PostMethod postMethod = new PostMethod(url);

        NameValuePair[] data = {
                new NameValuePair("username", "你好")
                ,new NameValuePair("password", "wangtao") };

        postMethod.setRequestBody(data);
        int resultCode = client.executeMethod(postMethod);
        if(resultCode != HttpStatus.SC_OK){
            System.err.println("Method failed:" + postMethod.getStatusLine());
        }
        InputStream responseBody = postMethod.getResponseBodyAsStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(responseBody,"GBK"));
                String tempBf = null;
                while((tempBf=reader.readLine()) != null){
                    System.out.println(tempBf);
                }
    }
}

 client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");和req.setCharacterEncoding("UTF-8");编码格式相同,BufferedReader reader = new BufferedReader(new InputStreamReader(responseBody,"GBK"));和resp.setCharacterEncoding("GBK");的编码格式相同。这样就可以解决乱码问题了。

分享到:
评论

相关推荐

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

    HttpClient中文乱码问题的核心在于字符编码不一致或者未明确指定。默认情况下,HttpClient可能使用ISO-8859-1作为编码,而我们的中文字符通常需要UTF-8编码才能正确显示。以下是一些解决HttpClient中文乱码问题的...

    彻底解决httpClient乱码问题

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

    HttpClient、乱码解决:实例

    本篇将详细介绍如何使用HttpClient解决乱码问题。 一、HttpClient基本使用 HttpClient主要由以下几个核心组件构成: 1. HttpClient:客户端实例,负责管理连接、配置请求等。 2. HttpRequestBase:表示HTTP请求,如...

    httpclient4上传文件中文乱码问题解决办法代码示例

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

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

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

    android客户端向服务器提交请求的中文乱码问题

    在Android客户端向服务器提交请求时,遇到中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致或处理不当导致的。以下将详细解释这个问题的原因、影响以及如何解决。 首先,我们要明白字符编码的基本原理。...

    解决了中文乱码的http的get和post请求demo

    首先,我们需要理解中文乱码问题产生的原因。当HTTP请求发送含有中文字符的数据时,如果编码格式不一致或未正确指定,接收端就可能无法正确解码,从而导致乱码。HTTP协议本身并不规定字符编码,而是依赖于Content-...

    java中文乱码解决之道(8)解决URL中文乱码问题Jav

    在Java编程中,中文乱码问题是一个常见的挑战,特别是在处理URL时。URL编码是导致中文乱码的关键因素,因为URL不支持非ASCII字符。本文将深入探讨如何在Java中有效地解决URL中文乱码问题。 首先,我们需要理解URL...

    HttpClient 4文件上传

    #### 四、解决中文乱码问题 在使用`MultipartEntity`时,可能会遇到中文字符乱码的问题。为了解决这个问题,可以通过指定`HttpMultipartMode.BROWSER_COMPATIBLE`模式以及指定字符集来解决: ```java ...

    页面get请求 中文参数方法乱码问题的快速解决方法

    总结,解决GET请求中文参数乱码问题的关键在于前端和后端保持一致的编码和解码策略。通过使用`encodeURI()`函数两次编码,并在服务器端正确解码,可以有效避免乱码问题。同时,确保整个应用程序中的字符编码统一也是...

    手动修改编码为UTF-8 的 commons-httpclient-3.1包

    在开发中遇到乱码问题 上传文件并传其它参数时 按网上多种方法尝试设置UTF-8编码总是不好用,只好修改源码统一编码为utf-8 后打包,解决问题 此包没有经过其它编码环境下测试,不过应该不会有其它影响

    一个使用HttpClient调用天气预报接口的例程

    在Android中,如果服务器返回的数据不是UTF-8编码,而使用了GBK,那么在处理文本时需要进行正确的字符编码转换,以防止乱码问题。 5. **源码解析**: - `HttpGet`对象:创建一个HttpGet实例,设置其请求URL,用于...

    httpclient连接第三方接口的实际项目案例

    本案例将详细介绍如何使用HttpClient进行GET和POST类型的请求,以及如何解决在处理过程中可能遇到的文件上传和中文乱码问题。 首先,我们需要导入HttpClient相关的依赖。在Maven项目中,可以在pom.xml文件中添加...

    以httpclient方式提交数据

    本文将深入探讨如何使用HttpClient来提交数据,以及这两种方法的基本原理和实际应用。 1. **HttpClient简介** Apache HttpClient是一个开源项目,它提供了一个灵活且功能丰富的API,用于执行HTTP请求和处理响应。...

    .net core3.1 WebAPI使用HttpClient为企业微信上传临时素材

    asp.net core3.1 webAPI对接企业微信上传临时素材,返回media_id. 来自于实际项目;

    HttpClient应用实例2

    本实例主要关注如何解决在使用HttpClient进行文件上传时可能出现的乱码问题。 在HttpClient中,乱码问题通常出现在两个方面:请求参数的编码和响应内容的解码。请求参数的编码涉及到URL编码,特别是包含非ASCII字符...

    mysql.rar_JSP+Mysql_中文乱码

    在开发Web应用时,我们经常会遇到中文乱码问题,特别是在JSP与MySQL的结合使用中。这个"mysql.rar_JSP+Mysql_中文乱码"压缩包提供的资源旨在帮助开发者解决此类问题。以下是对这个问题的详细解释和解决方案。 首先...

    HttpClient以及获取页面内容应用

    * 解决中文乱码问题 * @param httpUrl * @return */ public static String downloadPage(String httpUrl) { StringBuffer pageBuffer = new StringBuffer(); URL pageUrl = null; try { pageUrl =...

    使用httpClient组件解析html并解决字符编码

    但是,在实际使用中,经常会遇到字符集编码乱码问题。本文将讨论如何使用HttpClient 3.0解析HTML,并解决字符编码问题。 HttpClient组件简介 Apache HttpClient是一个基于Java的HTTP客户端库,提供了一个强大且...

    httpclient模拟post请求json封装表单数据的实现方法

    我们使用 `new StringEntity(jsonParam.toString(), "utf-8")` 创建了一个新的 `StringEntity` 实例,并指定字符编码为 UTF-8,以避免中文乱码问题。 设置 `StringEntity` 的内容类型为 `application/json`,这是...

Global site tag (gtag.js) - Google Analytics