`
- 浏览:
32513 次
-
关于httpClient的个别字符乱码
近期在做抓取的工作,登录到别人的网站上获取页面的信息,解析之后封装成自己的东西。
遇到一个问题,httpclient的post方法实现的连接网页,后来解析时有一个字出现了乱码。先附上我的代码:
public String getCourse(String sessionId) throws ClientProtocolException,
IOException {
HttpClient client = new DefaultHttpClient();
String url = "http://218.195.96.24/Jwmis/znpk/Pri_StuSel_rpt.aspx";
HttpPost post1 = new HttpPost(url);
String year = "";
List<NameValuePair> params = Lists.newArrayList();
int currentYear = DateUtil.getYear();
int currentMonth = DateUtil.getMonth();
if (currentMonth < 9) {
year = (currentYear - 1) + "1";
} else {
year = currentYear + "0";
}
// String year = CrawlerConfigUtil.SHANXILIGONG_YEAR;//
// 陕西理工的课表查询年份写在配置文件
params.add(new BasicNameValuePair("Sel_XNXQ", year));// 年份
params.add(new BasicNameValuePair("px", "1"));
params.add(new BasicNameValuePair("rad", "1"));
params.add(new BasicNameValuePair("Submit01", "检索"));
post1.setHeader("Content-Type", "application/x-www-form-urlencoded");
post1.setHeader("Cookie", "ASP.NET_SessionId=" + sessionId);
post1.setHeader(
"User-Agent",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Firefox/24.0");
//设置请求的编码为utf-8
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
//设置请求中传递参数的编码
post1.setEntity(new UrlEncodedFormEntity(params,"gb2312"));
HttpResponse response1 = client.execute(post1);
HttpEntity entity1 = response1.getEntity();
//设置响应的编码为gbk
String result1 = EntityUtilsl.toString(entity1,"GBK");
return result1;
}
这里返回的result1,不管怎么去设置请求编码,请求参数编码,还有响应的编码,都有个别字符编码的问题。最终找到一种解决方案,分享出来给大家,希望对需要的人有帮助。
将
//设置响应的编码为gbk
String result1 = EntityUtilsl.toString(entity1,"GBK");
更改为:byte[] bytearray = EntityUtils.toByteArray(entity1);
String result1 = new String(bytearray, "gbk");
就是说先将其转为byte[],然后再转为字符串。就可以解决问题了。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
综上所述,解决HttpClient乱码问题涉及多个环节,包括正确设置字符编码、理解HTTP头信息、自定义HttpClient配置以及编写健壮的工具类。只有对HTTP通信的各个环节有深入理解,才能有效地处理这类问题,确保数据传输的...
本篇将详细介绍如何使用HttpClient解决乱码问题。 一、HttpClient基本使用 HttpClient主要由以下几个核心组件构成: 1. HttpClient:客户端实例,负责管理连接、配置请求等。 2. HttpRequestBase:表示HTTP请求,如...
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、Commons Lang以及其他的辅助库。以下是POM文件中的依赖配置: ```xml <!-- ....
HttpClient中文乱码问题的核心在于字符编码不一致或者未明确指定。默认情况下,HttpClient可能使用ISO-8859-1作为编码,而我们的中文字符通常需要UTF-8编码才能正确显示。以下是一些解决HttpClient中文乱码问题的...
但是,在实际使用中,经常会遇到字符集编码乱码问题。本文将讨论如何使用HttpClient 3.0解析HTML,并解决字符编码问题。 HttpClient组件简介 Apache HttpClient是一个基于Java的HTTP客户端库,提供了一个强大且...
HttpClient4.2.5实现文件上传,无中文文件名乱码问题。亲测无问题。有问题可吐槽!
httpclient 所需要的的4个jar包httpclient-4.2.jar, httpcore-4.2.jar,commons-codec-1.3.jar,commons-httpclient-3.1.jar,加2个相关的
在这个特定的问题中,错误的原因在于Header中的字符不合法,具体来说是一个中文字符。 FeignClient是Netflix开发的一种声明式HTTP客户端,常用于微服务间的通信。它通过接口定义来简化HTTP请求的编写。在Rancher...
HttpClientHelper 是一个C#编写的工具类,主要目的是简化HTTP客户端操作,提供同步和异步的请求方法,返回数据格式多样,包括字符串、泛型类型和XML。在爬虫开发中,这样的工具类非常实用,因为爬虫经常需要与各种...
在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...
8. **国际化与编码**:HttpClient支持多种字符集,当处理不同语言的字符串时,需注意正确的字符编码,如UTF-8、GBK等,避免乱码问题。 在文件`my-httpclient-0.0.2.jar`中,可能包含了HttpClient的定制版本或者扩展...
在使用`MultipartEntity`时,可能会遇到中文字符乱码的问题。为了解决这个问题,可以通过指定`HttpMultipartMode.BROWSER_COMPATIBLE`模式以及指定字符集来解决: ```java MultipartEntity reqEntity = new ...
在本文中,我们将深入探讨HttpClient的核心概念、使用方法以及如何通过`httpclient.jar`进行实战应用。 首先,HttpClient的主要组件包括: 1. **HttpClient实例**:这是整个HTTP通信的核心,负责管理连接、请求和...
9. **国际化与本地化**:HttpClient支持多种字符集和语言环境,能够正确处理非ASCII字符。 10. **易用性与扩展性**:HttpClient的设计允许开发者方便地替换或扩展其组件,如HTTP连接器、缓存策略、认证策略等,以...
《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...
这通常涉及到将SOAP XML转换为字符串并添加到请求中: ```java String soapRequestBody = ...
10. **国际化和本地化**:HttpClient 4.2.1考虑了国际化和本地化需求,支持多种字符编码和语言环境。 在实际开发中,使用HttpClient 4.2.1时,开发者需要根据具体需求配置请求执行器、连接管理器、认证策略等,以...
- `getMethod().getResponseBodyAsString()`:返回字符串形式的响应体,默认采用系统的默认字符集进行解码。 - `getMethod().getResponseBodyAsStream()`:返回 InputStream 类型的响应体,适用于大文件或流式数据...