Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HttpClient使用HttpGet获取Json数据出现部分数据乱码的情况

HttpClient使用HttpGet获取Json数据出现部分数据乱码的情况

作者头像
geekfly
发布于 2022-05-06 11:27:58
发布于 2022-05-06 11:27:58
1.3K00
代码可运行
举报
文章被收录于专栏:geekflygeekfly
运行总次数:0
代码可运行

问题描述: 在SSM框架,Controller内部使用HttpClient获取Json数据,在某些中文后出现乱码 情况(只是某写中文),在该项目中使用普通Java类没有出现乱码情况。 最终解决方案: 度娘搜了很久才解决。 源代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	HttpClient httpclient = new DefaultHttpClient();
	 HttpGet httpGet = new HttpGet("http://data.api.gkcx.eol.cn/soudaxue/querySchoolgufenSpecial.html?messtype=jsonp&page=1&size=50&fsxxxS=%E6%B9%96%E5%8C%97&examineeType=%E7%90%86%E7%A7%91&mark=500&recommended=%E4%BF%9D%E5%BA%95&schoolprovince=&recomluqupici=&year=2015&callback=jQuery18304095057360827923_1463726501794&_=1463726502201");  
     httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"); 
     
     HttpResponse response = httpclient.execute(httpGet);  
      HttpEntity entity = response.getEntity();  
      StringBuilder result = new StringBuilder();  
      if (entity != null) {  
          InputStream instream = entity.getContent();  
          BufferedReader br = new BufferedReader(new InputStreamReader(instream));  
          String temp = "";  
          while ((temp = br.readLine()) != null) {  
              String str = new String(temp.getBytes(), "utf-8");  
              result.append(str);//.append("\r\n");  
          }  
      } 
      System.out.println(result2);  

修改后代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void test() throws Exception{
	HttpClient httpclient = new DefaultHttpClient();
	 HttpGet httpGet = new HttpGet("http://data.api.gkcx.eol.cn/soudaxue/querySchoolgufenSpecial.html?messtype=jsonp&page=1&size=50&fsxxxS=%E6%B9%96%E5%8C%97&examineeType=%E7%90%86%E7%A7%91&mark=500&recommended=%E4%BF%9D%E5%BA%95&schoolprovince=&recomluqupici=&year=2015&callback=jQuery18304095057360827923_1463726501794&_=1463726502201");  
     httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"); 
     
     HttpResponse response = httpclient.execute(httpGet);  
      HttpEntity entity = response.getEntity();  
      String charset = "UTF-8";
      String result2 = "";
      if (entity != null) {  
    	  charset = getContentCharSet(entity);  
          // 使用EntityUtils的toString方法,传递编码,默认编码是ISO-8859-1   
       result2 = EntityUtils.toString(entity, charset);
      } 
        System.out.println(result2);      
}

public static String getContentCharSet(final HttpEntity entity)   
        throws Exception {   
        if (entity == null) {   
            throw new IllegalArgumentException("HTTP entity may not be null");   
        }   
        String charset = null;   
        if (entity.getContentType() != null) {    
            HeaderElement values[] = entity.getContentType().getElements();   
            if (values.length > 0) {   
                NameValuePair param = values[0].getParameterByName("charset" );   
                if (param != null) {   
                    charset = param.getValue();   
                }   
            }   
        }   
        if(StringUtils.isEmpty(charset)){  
            charset = "UTF-8";  
        }  
        return charset;   
    }  

由于jar包太多,不在展示了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HttpClient(一)HttpClient抓取网页基本信息
一、HttpClient简介   HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,   并且它支持 HTTP 协议最新的版本和建议。   官方站点:http://hc.apache.org/   最新版本4.5 http://hc.apache.org/httpcomponents-client-4.5.x/   官方文档: http://hc.apache.org/httpcomponent
用户1195962
2018/01/18
1.7K0
HttpClient(一)HttpClient抓取网页基本信息
HttpClient-代理IP、模拟浏览器
创建HttpHost对象,设置代理IP(如114.113.126.82,端口80)。
wangmcn
2022/07/25
7450
HttpClient-代理IP、模拟浏览器
HttpClient入门学习一
1、HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
别先生
2020/12/01
8880
HttpClient-Get请求、Post请求
有参数,请求链接为url(http://localhost:8083/getdemo2)
wangmcn
2022/07/25
3.3K0
HttpClient-Get请求、Post请求
Java:HttpClient篇,HttpClient4.2在Java中的几则应用:Get、Post参数、Session(会话)保持、Proxy(代理服务器)设置,多线程设置...
新版HttpClient4.2与之前的3.x版本有了很大变化,建议从http://hc.apache.org/处以得到最新的信息。
bear_fish
2018/09/19
2.7K0
HttpClient 发送get请求并返回Json数据
一、以百度百科接口为例 http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&
week
2018/08/24
3.5K0
HttpClient 发送get请求并返回Json数据
【Java爬虫】005-HttpClient学习笔记(补充:网页内容获取相关)
使用HttpClient可设置三种超时时间:RequestTimeout(获取连接超时时间)、ConnectTimeout(建立连接超时时间)、SocketTimeout(获取数据超时时间)。配置这三种超时时间,需要用到HttpClient的RequestConfig类中的方法custom(),该方法返回值为实例化的内部类Builder(配置器),其功能是配置先关请求的字段,还可以设置代理(proxy)、Cookie规范(cookieSpec)、是否允许HTTP相关认证等;
訾博ZiBo
2025/01/06
1910
httpclient4下载图片 java实现[通俗易懂]
有时候需要从网上抓取一下图片jpg、png等,也可以抓取zip等,这样就需要写程序才能达到想要的效果,
全栈程序员站长
2022/09/15
7160
JavaUtil_06_HttpUtil_使用httpclient实现
一、简介 使用 appache 的 httpclient 来实现的 二、源码 package com.ray.weixin.gz.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.http.Consts; import org.apache.http.Header; import org.
shirayner
2018/08/10
9510
HttpClient-Json格式、设置超时
Json格式、设置超时 目录 1、Json格式 2、设置超时 1、Json格式 1、创建Json类。 发送数据将数据类型转为Json格式。 接收数据将数据类型转为Json格式。 脚本代码: package com.test.demo; import java.io.IOException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHtt
wangmcn
2022/07/25
6920
HttpClient-Json格式、设置超时
HttpClient(二)HttpClient使用Ip代理与处理连接超时
前言   其实前面写的那一点点东西都是轻轻点水,其实HttpClient还有很多强大的功能:   (1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)   (2)支持自动转向   (3)支持 HTTPS 协议   (4)支持代理服务器等 一、HttpClient使用代理IP 1.1、前言   在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施。   这时候,代理IP就派上用场了。可以使用代理IP,屏蔽一个就换一个IP。   关于代
用户1195962
2018/01/18
2.7K0
Java微信支付快速入门&工具类
快速入门 1、微信支付官方在线API入口: https://pay.weixin.qq.com/wiki/doc/api/index.html 2、微信支付能力介绍: http://action.we
斯武丶风晴
2018/03/01
2.6K0
HttpClient详细解释
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。
全栈程序员站长
2022/11/16
1.6K0
java(优化21) httpClient使用详解
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。
Java架构师必看
2021/06/10
1.2K0
HttpClient技术
HttpClient 一、介绍 简介 坐标 二、应用 发送get请求不带参数 发送get请求带参数 发送post请求不带参数 发送post请求带参数 发送post请求带json类型参数 三、HTTPClient工具类的使用 工具类代码 一、介绍 简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、 功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 HTTP 协议可能是现在 Inter
时间静止不是简史
2020/07/25
1.8K0
HTTP 请求工具类
坐标 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.1</version> <classifier>jdk15</classifier> </dependency> 工具类 package com.baomidou.springboot.uti
高大北
2022/06/14
1K0
工具篇:apache-httpClient 和 jdk11-HttpClient的使用
apache HttpClient 是 java项目里 较为常用的组件之一;对接外部服务时,各个商家提供的接口是各式各样的,有自己的要求,因此要定制对应的请求客户端。httpClient是一个不错的选择
潜行前行
2021/12/02
2K0
工具篇:apache-httpClient 和 jdk11-HttpClient的使用
HttpClient使用不当,服务挂了,是时候系统学习一下了
事件一:联调微信支付接口,用到HttpClient,花时间整理了一番。如果有一篇文章,读一读就可以掌握HttpClient 80%的内容,再有可以直接用的Demo,下次再遇到是不是就可以非常容易集成了?这篇便是这篇文章的目标之一。
程序新视界
2021/12/20
1.9K0
高并发场景下的 HttpClient 优化方案,QPS 大大提升!
我们有个业务,会调用其他部门提供的一个基于http的服务,日调用量在千万级别。使用了httpclient来完成业务。之前因为qps上不去,就看了一下业务代码,并做了一些优化,记录在这里。
架构狂人
2024/02/04
8341
高并发场景下的 HttpClient 优化方案,QPS 大大提升!
httpClient写简单的get请求访问百度网址和Springmvc本地controller
main方法调用,本地启动的springMVC2工程,因此调用之前要先启动url的工程
全栈程序员站长
2022/06/30
5950
推荐阅读
相关推荐
HttpClient(一)HttpClient抓取网页基本信息
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验