1、非流式读取
HttpClient中可以之间使用HttpMethod的getResponseBodyAsString()方法获取返回的内容,在读取之前,如果需要做编码设置可以这样:
HttpMethod get=new GetMethod(url);
httpClient.executeMethod(get);
get.getParams().setContentCharset("GBK");
这么做虽然可以解决中文乱码问题,但是在HttpClient 3.1中这种方法是不推荐的,会发出警告。
2、流式读取
HttpClient推荐使用流式的读取返回内容,如下:
BufferedReader reader=new BufferedReader(new InputStreamReader(get.getResponseBodyAsStream()));
String tmp=null;
String htmlRet="";
while((tmp=reader.readLine())!=null){
htmlRet+=tmp+"\r\n";
}
System.out.println(new String(htmlRet.getBytes(),"GB2312"));
但是经过尝试发现这样会出现中文乱码问题。经过N次实验后,将上面代码修改如下,乱码问题随之解决。
HttpClient httpClient=new HttpClient();
HttpMethod get=new GetMethod(send_url);
try {
httpClient.executeMethod(get);
//System.out.println(get.getResponseBodyAsString());
BufferedReader reader=new BufferedReader(new InputStreamReader(get.getResponseBodyAsStream(),"ISO-8859-1"));
String tmp=null;
String htmlRet="";
while((tmp=reader.readLine())!=null){
htmlRet+=tmp+"\r\n";
}
System.out.println(new String(htmlRet.getBytes("ISO-8859-1"),"GB2312"));
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
get.releaseConnection();
}
HttpClient 流式读取时中文乱码的解决方法
转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
kubernetes无法删除namespaces命名空间的解决方法
通过etcd删除,亲测可行.[root@k8s-node1 dark]# kubectl get ns |grep TNAME STATUS AGEedison Terminating 6h27mwu
API kubernetes etcd namespaces k8s无法删除命名空间 -
git add 时中文乱码的解决方法
问题复现:中文时显示如上,出现问题的原因为编码格式不对。解决方法:vi打it的config文件vi config正确设置如下:core.quotepath=false问题已解决。
javascript 前端 开发语言 git 解决方法 -
GeoTools读取ESRI ShapeFile中文乱码解决方法
今天在使用Java版GIS开源工具GeoTools读取ShapeFile文件,其中ShapeFile的dbf文件(属性表)中的属性为中文字符,按照
乱码 shapefile geotools 解决方案 默认编码 -
HttpClient上传json串时中文数据乱码问题解决
HttpClient上传json串时中文数据乱码问题解决
中文乱码 HttpClient json utf-8 String -
SQLyog中文乱码的解决方法
MySQL要支持完整的中文字符集,应该设置为GBK编码。找到MySQL安装目录
character eclipse mysql jpa fonts