JSOUP 教程,JSOUP请求JSON ,JSOUP前往JSON 数据

soゝso 2016-09-13 13:10:25 44940

比来在应用 JSOUP  作为 爬虫  爬取数据,在用习气了 JSOUP  后,由于那种链式构造,异常爱好,故想用它来请求接口,构造请求头的时辰异常便利。其实它必须是支撑的,由于底层应用的照样 HttpConnection  做为处理的,代码以下:

Document doc = Jsoup
		.connect(Constant.DATA_URL)
		.header("Accept", "*/*")
		.header("Accept-Encoding", "gzip, deflate")
		.header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
		.header("Content-Type", "application/json;charset=UTF-8")
		.header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0")
		.timeout(10000).get();
Element body = doc.body();
JSONObject json = JSONObject.fromObject(body.text());

然则出现成绩了,请求就报错:

org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/json;charset=UTF-8, URL=http://www.百度.com/
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:600)
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
	at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227)
	at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216)

固然一看就明白,说没有指定类型。找了以下处理筹划:

 Response res = Jsoup.connect(Constant.DATA_URL)
		.header("Accept", "*/*")
		.header("Accept-Encoding", "gzip, deflate")
		.header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
		.header("Content-Type", "application/json;charset=UTF-8")
		.header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0")
		.timeout(10000).ignoreContentType(true).execute();//.get();
String body = res.body();
JSONObject json = JSONObject.fromObject(body);

下面其实关键点在于:ignoreContentType(true) ,这个是忽视请求类型。建议用execute() 去履行,假设用get 去履行的话,前来往是一个 HTML  页面包裹的 JSON  ,你处理起来稍微有点费力。前往情况以下:

并且你要处理换行,你看到有换行了吧, JSON  精确的格局是一行前往,多行的话转成 JSON  对象的时辰就会报错。所以照样推荐用execute() 去履行。

不过我最后照样换做用 HttpConnection  来处理。

InputStreamReader reader = null;
BufferedReader in = null;
try {
	URL url = new URL(Constant.DATA_URL);
	URLConnection connection = url.openConnection();
	connection.setConnectTimeout(1000);
	reader = new InputStreamReader(connection.getInputStream(), "UTF-8");
	in = new BufferedReader(reader);
	String line = null; // 每行内容
	StringBuffer content = new StringBuffer();
	while ((line = in.readLine()) != null) {
		content.append(line);
	}
	if (StringUtils.isNotBlank(content)) {
		String jsonStr = content.toString().replaceAll("\\n", "");
		data = JSONObject.fromObject(jsonStr);
	}
} catch (SocketTimeoutException e) {
	System.out.println("连接超时!!!");
} catch (JSONException e) {
	System.out.println("网站照应不是json格局,没法转化成JSONObject!!!");
} catch (Exception e) {
	System.out.println("连接网址纰谬或读取流出现异常!!!");
} finally {
	if (in != null) {
		try {
			in.close();
		} catch (IOException e) {
			System.out.println("封闭流出现异常!!!");
		}
	}
	if (reader != null) {
		try {
			reader.close();
		} catch (IOException e) {
			System.out.println("封闭流出现异常!!!");
		}
	}
}

建议API JSON 接口请求,照样用正常的 HTTP  请求吧。


版权所属:SO JSON在线解析

原文地址:http://exergyanc.com/blog/174.html

转载时必须以链接情势注明原始出处及本声明。


假设本文对你有赞助,那么请你赞助我,让我更有豪情的写下去,赞助更多的人。

关于作者
一个低调而闷骚的汉子。
相干文章
JQuery Ajax四种写法,Ajax请求前往JSON 操作Demo
Java API接口前往不是JSON的处理筹划,SpringMVC前往JSON设备。
Httpclent 请求限制,断定前往类型和前往数据大年夜小
JSOUP 教程JSOUP爬虫教程JSOUP超时分析与处理
JSOUP教程JSOUP 乱码处理,JSOUP冷僻字乱码处理筹划
JSOUP教程JSOUP的精确翻开姿势。
Elasticsearch 随机前往数据 API
CDN 请求前往 connection reset by peer,被拦截请求处理筹划
JSOUP 教程—— Java爬虫,简略单纯入门,秒杀htmlparser
Java 之 HTTP请求乱码处理,GZIP 前往值乱码处理
最新文章
Java JSON 组件选型之 FastJson 为甚么总有马脚? 482
应用七牛云存储完成图片API,主动删除图片筹划合集 1416
神速ICP立案经历分享,ICP立案居然一天就经过过程了 2419
百度加强推送URL链接,百度SEO强行推送链接JavaScript代码案例讲解。 3067
SOJSON 拓展办事器被DDos进击了一早晨,是若何处理的? 3459
湖南地区立案“新增网站需提交组网筹划或解释解释”,关于立案做简单论述 3511
企查查你是个甚么企业,骗子的帮凶,欺骗的集中营,经过过程企查查骚扰企业德律风赓续,为所欲为的企查查 9883
Java爬取百度云不雅测对网站的检测数据,获得子域名及域名的安然信息 2613
【2020年】百度搜刮词获得,获得百度搜刮的关键词【真实有效】 7599
Nodejs情况装置,Nodejs情况装置一篇就够了 1908
最热文章
苹果电脑Mac怎样恢复出厂体系?苹果体系怎样重装体系? 436680
我为甚么要选择RabbitMQ ,RabbitMQ简介,各类MQ选型比较 419689
收费气象API,全国气象 JSON API接口,可以获得五天的气象预告 352368
最新MyEclipse8.5注册码,有效期到2020年 (曾经更新) 317230
收费气象API,气象JSON API,不限次数获得十五天的气象预告 291424
Elasticsearch教程(四) elasticsearch head 插件装置和应用 223693
Jackson 时间格局化,时间注解 @JsonFormat 用法、时差成绩解释 181605
谈谈斐讯路由器劫持,你用斐讯路由器,你须要知道的任务 137176
Elasticsearch教程(一),全程直播(小白级别) 120499
Elasticsearch教程(五) elasticsearch Mapping的创建 99634

骚码参加我们 / 千人QQ群:259217951

入群须要5元为的是没有渣滓告白,假设没有QQ钱包,可以加群主拉进。

二维码生成 来自 >> 二维码生成器

付出扫码

一切赞助/开支都讲地下通细,用于网站保护:赞助名单检查

检查我的收藏

正在加载... ...