- 浏览: 1615718 次
- 性别:
- 来自: 长春
文章分类
- 全部博客 (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 1520Java中Calendar日期对象【笔记】 最近项目中用到了C ... -
通过JAVA与串口(RS232)通信实例
2009-12-10 18:13 21163最近了解到的需求是需要需激光打刻机进行(RS232)串口通信, ... -
JAVA常用的代理设置
2009-09-09 09:50 8237由于公司上网实行代理机制, 而最近一段时间又在研究Web上的O ... -
解析图片1D/2D码(条形码)
2009-06-26 16:07 3529看到一个有趣的东西可以解析条码的工具库 ZXING 测试了一下 ... -
初探JDK6 javax.script (javascript解析)
2009-06-04 13:40 4857初探JDK6 javax.script (javascript ... -
J2SE5.0新特性之监控与管理
2009-05-12 10:47 1740j2se 5.0使用 Java Management Exte ... -
java的socket通信的demo
2008-12-31 12:44 4210package test.socket; impor ... -
java创建系统托盘实现(swt和jdk6分别实现)
2008-12-29 21:44 4360由于jdk6之前并不支持 所以使用swt jdk6可以支持了 ... -
java与电子邮件
2008-10-07 15:23 1896java与电子邮件 -
如何通过jndi连接数据源
2008-09-22 09:43 1396// Obtain our environment nam ... -
使用+JDBC+的高级数据库操作
2008-09-19 13:27 1326使用+JDBC+的高级数据库操作 -
JSP文件下载--流方式
2008-08-11 14:14 1979<%@page language="jav ... -
apache的fileupload详解
2008-07-31 08:53 2351第1章 文件上传组件的应用与编写 1 1.1 准备实验环境 1 ... -
深入浅出CGlib-打造无入侵的类代理
2008-07-28 14:23 33659CGlib是什么? CGlib是一个强大的,高性能,高质量的C ... -
将jdbc结果集转换成对象列表
2008-07-24 13:11 6199将jdbc结果集转换成对象列表 估计hibernate就是用得 ... -
传统jdbc获取连接的通用方法
2008-06-19 14:24 2581可能是hibernate和ide的关系, 发现目前自己手写jd ... -
apache fileupload中文编码问题
2008-06-18 15:10 4484request.setCheracterEncoding( ... -
JAVA中的反射机制详解(z)
2008-04-14 09:52 1319作者:baocl JAVA反射机制 JAVA反 ... -
JAVA代码注释
2008-03-20 12:09 3317整个类文件注释 示例如下: /* * @(#)O ... -
properties属性文件的相关操作
2008-03-17 13:56 1398properties的使用 加载 Properties p ...
相关推荐
下载这个工具类,然后直接调用createHtmlPage方法就可以了。最关键一点是,网上的方法没有一个解决了乱码问题,费了我不少功夫。
httpclient 请求两种方式,如果有cookie可加上cookies,同步获取返回值
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
HttpClient请求(get请求、post请求)
httpclient相关jar 及其详解
HttpURLConnection请求和HttpClient请求...................................................................
解决HttpClient中文乱码问题jar文件
适用于多线程的Httpclient请求的工具类
很全面的代码介绍,很完整的乱码解决说明,让你一目了然,值得研究
JAVA发送HttpClient请求及接收请求结果过程
NULL 博文链接:https://bijian1013.iteye.com/blog/2310211
详细说明在https://blog.csdn.net/zyf2533/article/details/118294101?spm=1001.2014.3001.5501
httpClient请求工具类,适合多个系统间的数据请求
HttpClient 请求腾讯接口实例,详细操作,完整代码,按照各级别放置
HttpClient,发送异步请求,get、post请求
其中包含项目post-demo定义接口;包含另一个项目httpclient-demo使用工具类发送post请求调用接口。详细内容查看博客 httpclient发送post请求
try(CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost httpPost = new HttpPost(url); StringEntity stringEntity = new StringEntity(params, Charset.forName("UTF-8")); ...
HttpClient4.2.5实现文件上传,无中文文件名乱码问题。亲测无问题。有问题可吐槽!
HttpClient与Asynctask与服务器的结合使用
使用HttpClient发送http请求需要的jar包。org.apache.http的jar包