`
zxwxiao
  • 浏览: 19167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HttpClient4.2.5 上传中文文件名乱码

阅读更多

示例:使用httpclient4.2.5.jar 上传图片,后台servlet中使用commons-fileupload-1.3.jar 处理上传文件

注意版本问题:使用httpclient4.2.5,httpmime-4.2.5.jar,httpmime-4.2.5.jar上传后

后台:

ServletFileUpload upload = new ServletFileUpload(diskFactory);

List fileItems = upload.parseRequest(request);

fileItems的结果集始终等于0,然后测试采用jsp上传,发现上传控件<input type="file" name="d" />

中name属性不能为空,否则fileItems的结果集始终为0。

httpclient 调试的过程中发现,这个文件名是放在head里的

form-data; name="d"; filename="中心.jpg"{org.apache.http.entity.mime.FormBodyPart类中封装}

 

在org.apache.http.entity.mime.HttpMultipart类中调用了这个方法(需要修改源码):

 

  private static void writeField( final MinimalField field, final OutputStream out) throws IOException {

        writeBytes(field.getName(), out);

        writeBytes(FIELD_SEP, out);

        writeBytes(field.getBody(), out); // 此处没有进行charset 修改为writeBytes(field.getBody(),Charset.forName("UTF-8"), out);

        writeBytes(CR_LF, out);

    }

开始调用方式:

File file = new File("D:\\test\\upload\\中心.jpg");

HttpPost post = new HttpPost(“http://localhost:8088/WebService/a/d.do”);

MultipartEntity reqEntity = new MultipartEntity();

StringBody comment = new StringBody("A binary啦", Charset .forName(org.apache.http.protocol.HTTP.UTF_8));

reqEntity.addPart("a1", bin);

reqEntity.addPart("a2", comment);

post.setEntity(reqEntity);

HttpResponse response = client.execute(post);

HttpEntity resEntity = response.getEntity();

 

说明在执行client.execute(post);的过程中会调用reqEntity.writeTo(OutputStream d);方法,方法如下

 public void writeTo(final OutputStream outstream) throws IOException {

        this.multipart.writeTo(outstream);

 

    }

 

最后发现其实可以不用改源码的

MultipartEntity d = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,null,Charset.forName("UTF-8"));

 

HttpMultipartMode.BROWSER_COMPATIBLE 枚举值

因为程序默认是HttpMultipartMode.STRICT 所以走的是没有转化字符集的方法。

over

 

 

 

 

分享到:
评论

相关推荐

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

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

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

    包含翻译后的API文档:httpclient-4.2.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.httpcomponents:httpclient:4.2.5; 标签:apache、httpcomponents、httpclient、中文文档、jar包、java; 使用...

    httpclient-4.2.5

    《HttpClient 4.2.5:Java通信的基石与安全实践》 HttpClient是Apache软件基金会提供的一个开源HTTP客户端库,其版本4.2.5在Java通信领域具有广泛的使用和高度的认可。这个库为开发者提供了丰富的功能,使得通过...

    最新httpclient-4.2.5和httpcore-4.2.4.jar.rar

    HttpClient 4.2.5在Android上的表现相对稳定,能够处理各种网络状况,包括慢速网络和频繁切换的网络环境。而HttpCore作为HttpClient的基础,它的轻量级特性使得在移动设备上运行更为合适。 在Java Web开发中,...

    HttpClient4.2.5

    HttpClient4.2.5是一个稳定且广泛使用的版本,它修复了前一版本的一些已知问题,增强了性能和可靠性。 HttpClient的核心组件包括以下几个方面: 1. **HttpClient实体**:这是HttpClient的主要类,负责发起HTTP请求...

    httpclient-4.2.5 相关jar包

    在实际应用中,HttpClient 4.2.5的使用通常包括以下几个步骤: 1. 创建HttpClient实例,可以选择不同的连接管理和执行策略。 2. 创建HttpGet或HttpPost等HttpRequestBase对象,设置请求URL和其他参数。 3. 使用...

    httpclient-4.2.5.jar

    httpclient-4.2.5.jar

    apache httpclient jar包

    HttpClient 4.2.5是该库的一个稳定版本,它包含了多项改进和修复,以提高性能和稳定性。这个版本支持HTTP/1.1协议,并且为即将推出的HTTP/2提供了部分兼容性。在HttpClient中,你可以自定义请求头、处理重定向、管理...

    httpclient-api-4.2.5

    httpclient api 4.2.5 最新的文档 为方便离线查阅,制作成了chm格式与大家分享

    httpcore-4.2.4,httpclient-4.2.5,httpclient-cache-4.2.5,httpmime-4.2.5的jar包下载

    这里提到的四个jar包——httpcore-4.2.4,httpclient-4.2.5,httpclient-cache-4.2.5,httpmime-4.2.5,都是Apache HttpClient库的不同组件,用于支持HTTP通信和相关功能。 **httpcore-4.2.4.jar** 是HTTP Core模块...

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

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

    httpclient-4.2.5-API文档-中英对照版.zip

    包含翻译后的API文档:httpclient-4.2.5-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.httpcomponents:httpclient:4.2.5; 标签:apache、httpcomponents、httpclient、中英对照文档、jar包...

    httpclient 4.X版本下载有的带源码包

    2016-01-05 10:38 524,878 httpclient-4.2.5-sources.jar 2015-11-19 11:02 433,368 httpclient-4.2.5.jar 2016-01-22 09:23 435,628 httpclient-4.2.6.jar 2017-12-20 12:08 590,533 httpclient-4.3.5.jar 2017-12-...

    HttpClient、乱码解决:实例

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

    彻底解决httpClient乱码问题

    在处理中文字符时,由于编码不一致或者处理不当,往往会出现乱码现象。以下是一些关键的知识点和解决方案: 1. **字符编码设置**:HttpClient默认可能不会自动处理服务器返回的字符集,因此需要明确指定编码。在...

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

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

    httpcomponents-client-4.2.5

    在实际开发中,Apache HttpClient 4.2.5可以用于各种场景,如网页抓取、服务调用、文件上传下载等。通过其提供的功能,开发者可以定制化地处理HTTP请求,实现复杂的数据交换逻辑,同时还能保证程序的稳定性和效率。 ...

    httpcore-4.2.4.jar 和 httpclient-4.2.5.jar

    https 协议 在 http 基础上做了一次算法加密,但并不是完全安全的。我们可以通过躲避证书,绕过加密算法来获取数据。 jar 包版本准确定位:httpcore-4.2.4.jar 和 httpclient-4.2.5.jar

Global site tag (gtag.js) - Google Analytics