- 浏览: 1633361 次
- 性别:
- 来自: 长春
文章分类
- 全部博客 (309)
- ext (19)
- web (13)
- PHP (19)
- 互联网新闻 (3)
- oracle (3)
- Mootools (1)
- FLEX (3)
- 人在职场 (2)
- hibernate (24)
- spring2 (1)
- J2SE (24)
- WEB_UI (14)
- 其它 (11)
- Log4J (1)
- iText (10)
- SQL (11)
- 设计模式 (3)
- lucene (6)
- 开源项目 (2)
- javascript (20)
- 软件&破解补丁 (48)
- Quartz (2)
- 解决方案 (1)
- 工作存档 (2)
- JAVA对文件操作 (2)
- C&C#&VC (1)
- struts2 (3)
- 版本控制 (2)
- 软考基础 (23)
- JBPM (2)
- velocity (4)
- javamail (3)
- HttpClient (9)
- 虚拟化技术 (2)
- 报表 (3)
- ibatis (5)
- Spring (4)
- 信用卡 (0)
- 芒果钱包 (0)
- 养卡 (0)
最新评论
-
a601962168:
...
通过JAVA与串口(RS232)通信实例 -
olive009:
...
Adobe Acrobat 9 Pro & Pro Extended 中文版/英文版 下载及破解补丁 -
overshit:
api更新了,一加filter就Callback filter ...
深入浅出CGlib-打造无入侵的类代理 -
u010778233:
写得很不错,已经用起来了,谢谢
将jdbc结果集转换成对象列表 -
924060929:
我想找就是要这个功能!!!!!!!!
velocity基础教程--2自定义ResourceLoader实现字符模板
HttpClient 请求的中文乱码问题
相关类库:
commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar
使用方法setContentCharset();
这里以GetMethod为例:
如果请求的页面编码为GB2312
其它部分略
基本上设置请求部分完成了
下面是对请求的页面读取的解析
最简单的方式是直接输出页面,这里基本上不需要任何设置。
当然你也可以使用流方式读取
当然还可以使用这样的方式,因为默认是使用ISO-8859-1,无非就是多进行了几次转码
我还是建议使用第一种方法,但我认为本质上是一致的
对于请求部分还可以通过如下几种方式进行设置
这里我只是给予大家参考,实际上etContentCharset()就可以了,如果那个页面通过上述方法不能成功读取,也请指明。
如果大家有更好的方法 也请告知。
长春生活网
我最近也在 也在用HttpClient ,也遇到了中文乱码问题,比如:url="http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3"调用: GetMethod getMethod = new GetMethod(url);报url异常:java.lang.IllegalArgumentException: Invalid uri 'http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3': escaped absolute path not validat org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:219)at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:88)
GetMethod getMethod = new GetMethod("http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/"+URLEncoder.encode("05%20-%20星期一天气晴我离开你.mp3","UTF-8"));
相关类库:
commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar
使用方法setContentCharset();
这里以GetMethod为例:
如果请求的页面编码为GB2312
其它部分略
GetMethod getMethod = new GetMethod("http://www.baidu.com"); //设置页面编码 getMethod.getParams().setContentCharset("GB2312");
基本上设置请求部分完成了
下面是对请求的页面读取的解析
最简单的方式是直接输出页面,这里基本上不需要任何设置。
System.out.println(getMethod.getResponseBodyAsString());
当然你也可以使用流方式读取
InputStream in = getMethod.getResponseBodyAsStream(); //这里的编码规则要与上面的相对应 BufferedReader br = new BufferedReader(new InputStreamReader(in,"GB2312")); String tempbf; StringBuffer html = new StringBuffer(100); while ((tempbf = br.readLine()) != null) { html.append(tempbf +"\n"); } System.out.println(html.toString());
当然还可以使用这样的方式,因为默认是使用ISO-8859-1,无非就是多进行了几次转码
InputStream in = getMethod.getResponseBodyAsStream(); //这里使用8859-1读取 BufferedReader br = new BufferedReader(new InputStreamReader(in,"ISO-8859-1")); String tempbf; StringBuffer html = new StringBuffer(100); while ((tempbf = br.readLine()) != null) { html.append(tempbf +"\n"); } //将8859-1再次转成GB2312 System.out.println(new String(html.toString().getBytes("ISO-8859-1"),"GB2312"));
我还是建议使用第一种方法,但我认为本质上是一致的
对于请求部分还可以通过如下几种方式进行设置
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"GB2312");
getMethod.addRequestHeader("Content-Type", "text/html; charset=UTF-8");
这里我只是给予大家参考,实际上etContentCharset()就可以了,如果那个页面通过上述方法不能成功读取,也请指明。
如果大家有更好的方法 也请告知。
长春生活网
- commons-codec-1.3.jar (45.6 KB)
- 下载次数: 130
- commons-httpclient-3.1.jar (297.9 KB)
- 下载次数: 129
- commons-logging-1.1.1.jar (59.4 KB)
- 下载次数: 79
评论
6 楼
w_mojian180
2014-10-17
getParams().setContentCharset("UTF-8"); 依然乱码 不知和解
5 楼
bluestome
2011-06-14
测试中文发布内容,不好意思拿你的帖子做实验!
4 楼
sysmaid
2009-12-30
用getMethod.addRequestHeader("Content-Type", "text/html; charset=UTF-8"); 没起作用
用post.getParams().setContentCharset("UTF-8");才可以
搞不懂这api是怎么设计的
用post.getParams().setContentCharset("UTF-8");才可以
搞不懂这api是怎么设计的
3 楼
bdceo
2009-11-11
最近在做一个获取Google的翻译,用的也是Httpclient,乱码也是很大的问题,头疼了好几天...也懒得去看HttpClient的源码...哎,就在google上一个一个得搜索解决方案,没想到今天在这儿解决了。
首先很感谢博主的解决方案,
然后呢,也在这儿晒晒我的google翻译...哈哈,献丑了。
发现博主提示的
这行代码,彻底解决了乱码问题。
首先很感谢博主的解决方案,
然后呢,也在这儿晒晒我的google翻译...哈哈,献丑了。
发现博主提示的
post.getParams().setContentCharset("UTF-8");
这行代码,彻底解决了乱码问题。
private static final String URL = "http://ajax.googleapis.com/ajax/services/language/translate"; /** * 获取Google翻译 * * @param 待翻译内容 * @param true:中翻英,false:英翻中 * @return 返回翻译后的内容 */ private synchronized static String doTranslate(String text, boolean flag) { String result = ""; HttpClient client = null; PostMethod post = null; try { client = new HttpClient(); post = new PostMethod(URL); NameValuePair[] params = { new NameValuePair("v", "1.0"), new NameValuePair("q", text), new NameValuePair("langpair", flag ? "zh-CN|en" : "en|zh-CN") }; post.setRequestBody(params); [color=red]post.getParams().setContentCharset("UTF-8");[/color] int status = client.executeMethod(post); if (status == HttpStatus.SC_OK) { result = post.getResponseBodyAsString(); } else { logger.error(">>>>>>>>> 请求翻译 :\"" + text + "\" 时失败,\nHttp返回的状态码是:" + status + ",时间:" + sdf.format(new Date()) + "<<<<<<<<<<"); } } catch (Exception e) { e.printStackTrace(); logger.error("请求Google翻译时出错:" + GoogleTranslate.class.getName() + ":" + e.getMessage()); } finally { if (post != null) { post.releaseConnection(); post = null; client = null; } } return parseJSON(result); } private synchronized static String parseJSON(String src) { String result = ""; try { JSONObject json = new JSONObject(src); JSONObject obj = json.getJSONObject("responseData"); if (obj != null) { result = obj.getString("translatedText"); result = result.replaceAll("% 26", "&"); } } catch (Exception e) { e.printStackTrace(); logger.error("解析Google返回的JSON数据时出错:" + GoogleTranslate.class.getName() + ":" + e.getMessage()); } return result; }
2 楼
llying
2009-02-19
gml520 写道
我最近也在 也在用HttpClient ,也遇到了中文乱码问题,比如:url="http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3"调用: GetMethod getMethod = new GetMethod(url);报url异常:java.lang.IllegalArgumentException: Invalid uri 'http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3': escaped absolute path not validat org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:219)at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:88)
GetMethod getMethod = new GetMethod("http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/"+URLEncoder.encode("05%20-%20星期一天气晴我离开你.mp3","UTF-8"));
1 楼
gml520
2009-02-18
我最近也在 也在用HttpClient ,也遇到了中文乱码问题,
比如:
url="http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3"
调用: GetMethod getMethod = new GetMethod(url);
报url异常:
java.lang.IllegalArgumentException: Invalid uri 'http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3': escaped absolute path not valid
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:219)
at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:88)
比如:
url="http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3"
调用: GetMethod getMethod = new GetMethod(url);
报url异常:
java.lang.IllegalArgumentException: Invalid uri 'http://www.blcu.edu.cn/financial/musicclub/02-sunyanzi/CD3/05%20-%20星期一天气晴我离开你.mp3': escaped absolute path not valid
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:219)
at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:88)
发表评论
-
Java中Calendar日期对象【笔记】
2010-02-03 09:18 1578Java中Calendar日期对象【笔记】 最近项目中用到了C ... -
通过JAVA与串口(RS232)通信实例
2009-12-10 18:13 21388最近了解到的需求是需要需激光打刻机进行(RS232)串口通信, ... -
JAVA常用的代理设置
2009-09-09 09:50 8306由于公司上网实行代理机制, 而最近一段时间又在研究Web上的O ... -
解析图片1D/2D码(条形码)
2009-06-26 16:07 3584看到一个有趣的东西可以解析条码的工具库 ZXING 测试了一下 ... -
初探JDK6 javax.script (javascript解析)
2009-06-04 13:40 4905初探JDK6 javax.script (javascript ... -
J2SE5.0新特性之监控与管理
2009-05-12 10:47 1782j2se 5.0使用 Java Management Exte ... -
java的socket通信的demo
2008-12-31 12:44 4267package test.socket; impor ... -
java创建系统托盘实现(swt和jdk6分别实现)
2008-12-29 21:44 4416由于jdk6之前并不支持 所以使用swt jdk6可以支持了 ... -
java与电子邮件
2008-10-07 15:23 1954java与电子邮件 -
如何通过jndi连接数据源
2008-09-22 09:43 1445// Obtain our environment nam ... -
使用+JDBC+的高级数据库操作
2008-09-19 13:27 1375使用+JDBC+的高级数据库操作 -
JSP文件下载--流方式
2008-08-11 14:14 2038<%@page language="jav ... -
apache的fileupload详解
2008-07-31 08:53 2422第1章 文件上传组件的应用与编写 1 1.1 准备实验环境 1 ... -
深入浅出CGlib-打造无入侵的类代理
2008-07-28 14:23 33803CGlib是什么? CGlib是一个强大的,高性能,高质量的C ... -
将jdbc结果集转换成对象列表
2008-07-24 13:11 6303将jdbc结果集转换成对象列表 估计hibernate就是用得 ... -
传统jdbc获取连接的通用方法
2008-06-19 14:24 2625可能是hibernate和ide的关系, 发现目前自己手写jd ... -
apache fileupload中文编码问题
2008-06-18 15:10 4540request.setCheracterEncoding( ... -
JAVA中的反射机制详解(z)
2008-04-14 09:52 1368作者:baocl JAVA反射机制 JAVA反 ... -
JAVA代码注释
2008-03-20 12:09 3373整个类文件注释 示例如下: /* * @(#)O ... -
properties属性文件的相关操作
2008-03-17 13:56 1439properties的使用 加载 Properties p ...
相关推荐
### HttpClient 4 文件上传知识点详解 #### 一、概述 在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了...
《使用Apache Commons HttpClient 3.1进行短信发送详解》 在Java开发中,发送短信是一项常见的功能,尤其在验证码验证、通知服务等方面有着广泛的应用。Apache Commons HttpClient 3.1是一个强大的HTTP客户端库,它...
这可能会导致中文乱码的问题。为了避免此类问题,可以指定字符编码: ```java String charset = "UTF-8"; // 或者 "GBK", "ISO-8859-1" 等 String responseString = new String(getMethod.getResponseBody(), ...
### Charles_N:HTTP请求响应监听工具详解 #### 一、Charles简介 Charles是一个强大的HTTP代理服务器、HTTP监视器以及反转代理服务器。它主要用于帮助开发者查看所有的HTTP通信,这对于理解和调试Web应用至关重要...
这个过程主要包括使用HttpClient请求网页、获取网页源码、查看源码是否有需要提取的数据、对源码进行拆解、获取需要的数据对自己创建的对象赋值、数据提取保存等步骤。 第一步:通过HttpClient请求到达某网页的url...
### Android移动互联知识点详解 #### 一、HTTP通信与Socket通信概述 在Android移动互联领域,网络编程是一项核心技能。本文将重点介绍两种常见的网络通信技术:HTTP通信和Socket通信。 - **HTTP通信**:主要用于...
使用HTMLParser或其他解析库时,需要正确识别和设置编码,以避免乱码问题。 4. **HTMLParser库**:HTMLParser是一个Java库,用于解析HTML文档并提取有用的信息。它可以解析HTML标记、属性、文本等,对于提取网页...
在发送包含中文文件名的请求时,框架会正确地编码文件名,避免了乱码现象。然而,确保服务器端也支持正确的编码方式是非常关键的。在发送请求前,你需要设置合适的字符集,如`"charset=UTF-8"`,以保证信息传输的...
- 数据编码:确保在发送和接收数据时正确处理字符编码,避免乱码问题。 - 错误处理:对可能出现的异常进行捕获和处理,保证程序的健壮性。 - 安全性:对于敏感信息,使用 HTTPS 协议来加密通信,增强数据安全性。...
1. **字符编码**:在处理中文字符时,确保服务器、数据库和JSP页面的编码统一,避免乱码问题。 2. **错误处理**:充分考虑可能出现的异常情况,如网络连接失败、签名错误、参数不合法等,要有完善的错误处理机制。 ...
【知识点详解】 在李响的工作日志中,主要涉及了几个关键的技术点,包括Web应用开发、搜索引擎服务的搭建和使用、数据导入以及服务间的通信。以下是对这些知识点的详细说明: 1. **Webapp的Maven工程创建**: ...
**C#实现网络爬虫详解** 网络爬虫是一种自动化程序,用于从互联网上抓取大量信息,以便进行数据分析、搜索引擎索引或者特定目的的数据挖掘。在C#中,我们可以利用.NET框架提供的各种类库来创建自己的网络爬虫。本文...
- 解决网络通信中可能出现的中文乱码问题的方法。 **8.5 WebKit应用** - **8.5.1 WebKit概述**: WebKit是一个开源的浏览器引擎,Android使用它来提供浏览网页的功能。 - **8.5.2 WebView浏览网页**: 使用WebView...
- MyBatis的配置文件详解。 - 动态SQL的实现方法。 - **常见面试题**: - MyBatis与Hibernate的主要区别? - **9.4 Struts2框架** - **知识点概述**: - Struts2的核心组件。 - Action的执行流程。 - ...