在利用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是一个功能强大的HTTP客户端,支持多种HTTP协议版本,包括GET、POST等请求方法,以及重试、连接管理等功能。在处理中文字符时,由于编码不一致...
以下是一些解决HttpClient中文乱码问题的关键知识点: 1. **设置字符编码**:在发送HTTP请求时,我们需要确保请求头中的`Content-Type`字段指定了正确的字符集,如`application/x-www-form-urlencoded; charset=UTF...
`httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...
本篇将详细介绍如何使用HttpClient解决乱码问题。 一、HttpClient基本使用 HttpClient主要由以下几个核心组件构成: 1. HttpClient:客户端实例,负责管理连接、配置请求等。 2. HttpRequestBase:表示HTTP请求,如...
### Httpclient官网教程中文版知识点总结 #### 一、引言 HTTP协议作为互联网的核心通信标准之一,在现代网络服务及物联网设备中扮演着至关重要的角色。随着技术的发展,越来越多的应用和服务依赖于HTTP协议来实现...
同时,Apache官方文档和社区论坛也是获取进阶知识和解决实际问题的重要途径。 总之,HttpClient 4.5.3是一个强大且灵活的HTTP客户端工具,其中文API为中文环境下的开发者提供了便利,使得在处理HTTP请求时能更加...
总的来说,HttpClient 4.1.2提供了全面的HTTP通信能力,适用于各种Java应用,无论是简单的Web抓取,还是复杂的RESTful API调用,都能找到合适的解决方案。通过阅读提供的教程文档,开发者可以深入理解HttpClient的...
### HttpClient 4 官方教程中文翻译版知识点详解 #### 一、概述 Apache HttpClient 是一个用于Java应用程序的客户端HTTP组件。它旨在提供一个高效、最新且功能丰富的HTTP客户端编程框架,同时也支持HTTPS协议。...
### HttpClient 4 文件上传知识点详解 #### 一、概述 ...Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供...同时,需要注意解决中文乱码等问题,以确保数据传输的准确性。
2. **安装与配置**:详细步骤指导如何将HttpClient库引入到Java项目中,包括Maven或Gradle的依赖配置,以及如何解决可能遇到的兼容性问题。 3. **创建HttpClient实例**:讲解如何初始化HttpClient对象,设置连接...
本案例将详细介绍如何使用HttpClient进行GET和POST类型的请求,以及如何解决在处理过程中可能遇到的文件上传和中文乱码问题。 首先,我们需要导入HttpClient相关的依赖。在Maven项目中,可以在pom.xml文件中添加...
总的来说,解决HTTP请求中的中文乱码问题,核心在于正确地设置编码格式,并在发送请求前对中文数据进行编码。无论是GET还是POST请求,都需要确保客户端和服务器之间对字符编码的一致理解。通过阅读提供的文档和示例...
* 解决中文乱码问题 * @param httpUrl * @return */ public static String downloadPage(String httpUrl) { StringBuffer pageBuffer = new StringBuffer(); URL pageUrl = null; try { pageUrl =...
asp.net core3.1 webAPI对接企业微信上传临时素材,返回media_id. 来自于实际项目;
本实例主要关注如何解决在使用HttpClient进行文件上传时可能出现的乱码问题。 在HttpClient中,乱码问题通常出现在两个方面:请求参数的编码和响应内容的解码。请求参数的编码涉及到URL编码,特别是包含非ASCII字符...
此外,对于需要处理认证的情况,HttpClient提供了一套完整的解决方案,包括基本认证、摘要认证以及NTLM认证等。 HttpCore则是HttpClient的基础,它是HTTP协议处理的核心库,主要负责HTTP消息的解析和编码。HttpCore...
这样设置可以解决中文乱码问题。 之后,我们把StringEntity实例设置为HttpPost对象的实体内容。为了发送请求并获取响应,我们创建了一个CloseableHttpClient实例来执行HttpPost,并且在得到的HttpResponse中检查...
易于使用的Python Http接口类,会自动转换编码解决中文等乱码的问题,会自动解压gzip压缩的网页内容,不用考虑启用了gzip服务器的转换工作。 Examples: Http Get httpClient = ComHttp.HttpClient('...