`
- 浏览:
31430 次
-
关于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
相关推荐
下载这个工具类,然后直接调用createHtmlPage方法就可以了。最关键一点是,网上的方法没有一个解决了乱码问题,费了我不少功夫。
很全面的代码介绍,很完整的乱码解决说明,让你一目了然,值得研究
主要介绍了java 中HttpClient传输xml字符串实例详解的相关资料,需要的朋友可以参考下
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
解决HttpClient中文乱码问题jar文件
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个相关的
httpclient3 httpclient4 上传文件 乱码问题
使用httpclient 3.0解析html,实际使用当中遇到的字符集编码乱码问题,主要用于网页的信息采集,此外还列出一部分截取字符串的方法,带源码 httpclient3.0 自己下载jar包
httpclient
HttpClient使用简介,关于HttpClient访问Web的GET和POST两种访问方式的介绍
httpClient完整封装获取网页信息、数据的代码+httpclient.jar
HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod ...
httpclient-4.5所需jar包,里面包含httpclient-4.5.jar等等10个必须的开发包。 1.commons-codec-1.9.jar 2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6....
httpclient.jar下载 包括code.jar包
httpclient jar包 httpclient jar包 httpclient jar包
HttpClient的一个封装, HttpClient的一个封装
赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.6.pom; 包含翻译后的API文档:httpclient...
C# HttpClientHelper(HttpClient工具类) 包含 同步/异步请求 返回 string/泛型类型/Xml 及一个单例模式 的 SingleHelper 适合做爬虫