`

HttpClient Post中文问题解决

    博客分类:
  • web
 
阅读更多

在利用httpclient向服务器post数据时,有两种中文问题;

1.filed字段值的中文

2.file名的中文

对于第一种,参看StringPart;其源代码有这样一段:

    private byte[] getContent() {
        if (content == null) {
            content = EncodingUtil.getBytes(value, getCharSet());
        }
        return content;
    }
    
    protected void sendData(OutputStream out) throws IOException {
        LOG.trace("enter sendData(OutputStream)");
        out.write(getContent());
    }

可以看出在发送数据时其调用了EncodingUtil的getBytes方法(利用了你通过setCharSet设置的编码)

因此,只要你在代码中这样:

   StringPart part = new StringPart(name, value);

   part.setCharSet("GBK");

中文就没有问题了

对于第二种,参看FilePart;其源代码中有这样一段:

protected void sendDispositionHeader(OutputStream out) 
    throws IOException {
        LOG.trace("enter sendDispositionHeader(OutputStream out)");
        super.sendDispositionHeader(out);
        String filename = this.source.getFileName();
        if (filename != null) {
            out.write(FILE_NAME_BYTES);
            out.write(QUOTE_BYTES);
            out.write(EncodingUtil.getAsciiBytes(filename));
            out.write(QUOTE_BYTES);
        }
    }

可以看出在转换文件名时,用的方法是EncodingUtil.getAsciiBytes(),查看这个方法源码为data.getBytes("US-ASCII"),因此中文文件名必定乱码,不管你是否调用了setCharSet("GBK")方法。

解决很简单:

   out.write(EncodingUtil.getBytes(filename, getCharSet()));

看了网上好多文章,好多都说改EncodingUtil类,其实我觉得改FilePart更好一些

分享到:
评论

相关推荐

    彻底解决httpClient乱码问题

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

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

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

    httpclient4中文API和使用

    `httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...

    HttpClient、乱码解决:实例

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

    httpclient官网教程中文版

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

    httpclient-4.5.3 中文API

    同时,Apache官方文档和社区论坛也是获取进阶知识和解决实际问题的重要途径。 总之,HttpClient 4.5.3是一个强大且灵活的HTTP客户端工具,其中文API为中文环境下的开发者提供了便利,使得在处理HTTP请求时能更加...

    HttpClient4.1.2中英文文档

    总的来说,HttpClient 4.1.2提供了全面的HTTP通信能力,适用于各种Java应用,无论是简单的Web抓取,还是复杂的RESTful API调用,都能找到合适的解决方案。通过阅读提供的教程文档,开发者可以深入理解HttpClient的...

    HttpClient 4 官方教程中文翻译版

    ### HttpClient 4 官方教程中文翻译版知识点详解 #### 一、概述 Apache HttpClient 是一个用于Java应用程序的客户端HTTP组件。它旨在提供一个高效、最新且功能丰富的HTTP客户端编程框架,同时也支持HTTPS协议。...

    HttpClient 4文件上传

    ### HttpClient 4 文件上传知识点详解 #### 一、概述 ...Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供...同时,需要注意解决中文乱码等问题,以确保数据传输的准确性。

    HttpClient--最全--安装包+官方文档(中文)

    2. **安装与配置**:详细步骤指导如何将HttpClient库引入到Java项目中,包括Maven或Gradle的依赖配置,以及如何解决可能遇到的兼容性问题。 3. **创建HttpClient实例**:讲解如何初始化HttpClient对象,设置连接...

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

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

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

    总的来说,解决HTTP请求中的中文乱码问题,核心在于正确地设置编码格式,并在发送请求前对中文数据进行编码。无论是GET还是POST请求,都需要确保客户端和服务器之间对字符编码的一致理解。通过阅读提供的文档和示例...

    HttpClient以及获取页面内容应用

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

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

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

    HttpClient应用实例2

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

    httpclient资料

    此外,对于需要处理认证的情况,HttpClient提供了一套完整的解决方案,包括基本认证、摘要认证以及NTLM认证等。 HttpCore则是HttpClient的基础,它是HTTP协议处理的核心库,主要负责HTTP消息的解析和编码。HttpCore...

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

    这样设置可以解决中文乱码问题。 之后,我们把StringEntity实例设置为HttpPost对象的实体内容。为了发送请求并获取响应,我们创建了一个CloseableHttpClient实例来执行HttpPost,并且在得到的HttpResponse中检查...

    ComHttp:PythonComHttp

    易于使用的Python Http接口类,会自动转换编码解决中文等乱码的问题,会自动解压gzip压缩的网页内容,不用考虑启用了gzip服务器的转换工作。 Examples: Http Get httpClient = ComHttp.HttpClient('...

Global site tag (gtag.js) - Google Analytics