如何使用Jsoup通过HTTPS从不进行拨号连接在哪连接

JSOUP 教程,JSOUP请求JSON ,JSOUP返回JSON 数据 —技术博客
JSOUP 教程,JSOUP请求JSON ,JSOUP返回JSON 数据
最近在使用作为爬取数据,在用习惯了后,因为那种链式结构,非常喜欢,故想用它来请求接口,构造请求头的时候非常方便。其实它必须是支持的,因为底层使用的还是做为处理的,代码如下:Document doc = Jsoup
.connect(Constant.DATA_URL)
.header("Accept", "*/*")
.header("Accept-Encoding", "gzip, deflate")
.header("Accept-Language","zh-CN,q=0.8,en-US;q=0.5,q=0.3")
.header("Content-Type", "application/charset=UTF-8")
.header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/ 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/charset=UTF-8, URL=http://www.baidu.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,q=0.8,en-US;q=0.5,q=0.3")
.header("Content-Type", "application/charset=UTF-8")
.header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/ Firefox/48.0")
.timeout(10000).ignoreContentType(true).execute();//.get();
String body = res.body();
JSONObject json = JSONObject.fromObject(body);上面其实关键点在于:ignoreContentType(true) ,这个是忽略请求类型。建议用execute() 去执行,如果用get 去执行的话,返回来是一个页面包裹的,你处理起来稍微有点费劲。返回情况如下:而且你要处理换行,你看到有换行了吧,正确的格式是一行返回,多行的话转成对象的时候就会报错。所以还是推荐用execute() 去执行。不过我最后还是换做用来解决。InputStreamReader reader =
BufferedReader in =
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 = // 每行内容
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) {
in.close();
} catch (IOException e) {
System.out.println("关闭流出现异常!!!");
if (reader != null) {
reader.close();
} catch (IOException e) {
System.out.println("关闭流出现异常!!!");
}建议API JSON 接口请求,还是用正常的请求吧。
版权所属:
原文地址:
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。
¥我需要走的更远,点击我 赞助。
如果还有疑问,点击我加群,为你提供最好的解答。
446
53
175
178
287
638
238
942
71
245
120862
77872
77046
73129
71325
60685
57884
55568
51643
44409
Blog` 标签
骚码加入我们&/&千人QQ群:
入群需要5元,如果没有QQ钱包,可以先Alipay、微信,赞助然后加群主拉进。 二维码生成 来自&&&&。
综合技术交流:点击加入--&&[][收费]
综合技术交流:点击加入--&&[][免费]
要求:不能发广告、暴力、政治、付费教程,违者直接踢出。
备注:入群费用5元,没有QQ钱包,可以先支付宝 or 微信扫码支付5元赞助后,我拉您进去。。
扫码赞助:。
所有赞助/开支都讲公开明细,用于网站维护:请教一个https协议分析的解决方法
[问题点数:100分,结帖人oyljerry]
请教一个https协议分析的解决方法
[问题点数:100分,结帖人oyljerry]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
匿名用户不能发表回复!|没有更多推荐了,
不良信息举报
举报内容:
关于Jsoup解析https网页的问题
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!jsoup Java HTML解析器:从一个URL加载一个Document
>> 从一个URL加载一个Document
从一个URL加载一个Document
你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据。你可以使用下面解决方法:
使用 方法:
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
方法创建一个新的 ,
取得和解析一个HTML文件。如果从该URL获取HTML时发生错误,便会抛出 IOException,应适当处理。
接口还提供一个方法链来解决特殊请求,具体如下:
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
这个方法只支持Web URLs (http和https
协议); 假如你需要从一个文件加载,可以使用
从一个URL加载一个Document对象查看:2338|回复:2
String url=&https://www.icbc-axa.com/&;
Document doc = Jsoup.connect(url).get();
即使设置timeout和userAgent也是同样报错,希望高手指点一下:
运行时报错提示:
十月 22, :00 下午 org.apache.http.impl.execchain.RetryExec execute
信息: I/O exception (java.net.SocketException) caught when processing request to {s}-& Connection reset
十月 22, :00 下午 org.apache.http.impl.execchain.RetryExec execute
信息: Retrying request to {s}-&
十月 22, :04 下午 org.apache.http.impl.execchain.RetryExec execute
信息: I/O exception (java.net.SocketException) caught when processing request to {s}-& Connection reset
十月 22, :04 下午 org.apache.http.impl.execchain.RetryExec execute
信息: Retrying request to {s}-&
十月 22, :04 下午 org.apache.http.impl.execchain.RetryExec execute
信息: I/O exception (java.net.SocketException) caught when processing request to {s}-& Connection reset
十月 22, :04 下午 org.apache.http.impl.execchain.RetryExec execute
信息: Retrying request to {s}-&

我要回帖

更多关于 如何进行远程连接 的文章

 

随机推荐