首先http响应的编码有两个部分,response头里的参数和页面开头的meta信息。其实浏览器首先是针对response头来设置页面charset的。httpClient模拟页面也是采用相同方式。所以其实乱码跟meta无关。
我们知道String-GBK〉ByteArray-GBK〉String是正确的,但如果我们采用String-GBK〉ByteArray-ISO-8859-1〉String呢?结果就是各种各样的乱码。
所以当httpClient用iso-8859-1读取response的时候已经转换了编码,很可能在这时已经乱码了。此时如果用method.getResponseBodyAsString();获取页面信息的时候再进行转换已经很难还原了。
通常如果要转换编码的时候,我会使用:
String target = new String(orig.getBytes("ISO-8859-1"),"GBK");
解决办法就是使用以下配置。
private static final String CONTENT_CHARSET = "GBK";// httpclient读取内容时使用的字符集
HttpClient client = new HttpClient();
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET);
分享到:
相关推荐
综上所述,解决HttpClient乱码问题涉及多个环节,包括正确设置字符编码、理解HTTP头信息、自定义HttpClient配置以及编写健壮的工具类。只有对HTTP通信的各个环节有深入理解,才能有效地处理这类问题,确保数据传输的...
在实际使用中,由于网络传输和编码转换的问题,可能会遇到乱码问题。本篇将详细介绍如何使用HttpClient解决乱码问题。 一、HttpClient基本使用 HttpClient主要由以下几个核心组件构成: 1. HttpClient:客户端实例...
HttpClient中文乱码问题的核心在于字符编码不一致或者未明确指定。默认情况下,HttpClient可能使用ISO-8859-1作为编码,而我们的中文字符通常需要UTF-8编码才能正确显示。以下是一些解决HttpClient中文乱码问题的...
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
HttpClient4.2.5实现文件上传,无中文文件名乱码问题。亲测无问题。有问题可吐槽!
检查网络连接,确保能够访问其他Web服务,如果网络没有问题,那么问题可能在于服务器或HttpClient的配置。 2. **服务器配置**:服务器可能存在配置错误,例如服务器端口没有打开,服务器应用程序崩溃,或者服务器不...
在HttpClient中,这个库用于处理URL编码和解码,以及在HTTP请求头或参数中可能涉及到的其他编码问题。 3. `commons-collections-3.2.jar`: Apache Commons Collections提供了对Java集合框架的扩展和增强,包括集合...
4. **实体处理**:HttpClient支持对请求和响应中的实体进行编码和解码,如表单数据、JSON、XML等。EntityUtils类提供了读取和解析响应实体内容的方法。 5. **重试和恢复策略**:HttpClient可以通过设置RetryHandler...
4. **重试策略**:当请求失败时,HttpClient可以根据预设的策略决定是否重试,避免因网络问题导致的错误。 5. **请求与响应处理**:HttpClient允许自定义请求头,处理响应头,以及对请求和响应实体内容的编码和解码...
HttpClient支持多线程环境,但必须正确配置连接池和管理策略,以防止资源泄漏和性能问题。此外,正确处理异常和错误,以及适时关闭资源,也是使用HttpClient时的关键。 总结,`httpclient-4.5.jar`及其相关依赖提供...
10. **线程安全**:为了适应多线程环境,`httpclientUtils`可能已经考虑了HttpClient实例的线程安全问题,确保在并发环境中正确使用。 在实际使用`httpclientUtils`时,开发者可以通过调用工具类提供的方法,如`...
8. **HTTP协议兼容性**:HttpClient遵循HTTP/1.1和部分HTTP/2标准,可以处理包括Chunked编码、Expect-Continue交互在内的复杂HTTP特性。 9. **国际化与本地化**:HttpClient支持多种字符集和语言环境,能够正确处理...
2. **commons-codec-1.6.jar**:这是一个编码解码库,HttpClient依赖它来处理URL编码、Base64编码等,它是进行网络通信时数据编码的关键库。 3. **httpcore-4.2.1.jar**:这是HTTP Core库,提供了HTTP协议的基础...
借助Commons Codec处理各种编码问题;而Commons Logging则使我们能够灵活地控制日志输出,便于调试和监控。 在实际项目中,HttpClient常用于自动化测试、爬虫开发、后端服务间通信等场景。它的优点在于强大的功能集...
HttpClient3.1依赖于这个库来处理HTTP请求中的编码问题,例如在URL参数或表单数据中进行编码。 4. **commons-logging-1.0.4.jar**:Apache Commons Logging是一个轻量级的日志记录抽象层,允许开发者选择底层的日志...
7. **commons-codec-x.x.jar**:提供了常见的编码和解码算法,如Base64、URL编码等,HTTPClient在处理编码问题时会用到。 8. **其他可能的依赖库**:根据实际需求,可能还需要包括其他Apache Commons库(如...
10. **自定义化**:HttpClient的API设计灵活,允许开发者根据需求自定义请求行为,如设置超时、自定义编码解码等。 在实际开发中,使用Apache Commons HttpClient库时,通常需要以下步骤: 1. **导入依赖**:将...
在HttpClient中,这个库主要用于HTTP请求和响应中的数据编码和解码,比如当处理URL、查询字符串或者表单数据时。 2. **`commons-httpclient-3.0.1.jar`**: 这是HttpClient的核心库,包含了执行HTTP和HTTPS请求的...
- **自定义编码与解码**:用户可以通过实现`EntityEncoder`和`EntityDecoder`接口,自定义请求体和响应体的编码和解码方式。 3. **使用示例** - 创建HttpClient实例:使用`HttpClientBuilder`或`...