关于Jsoup的异常org.jsoup.UnsupportedMimeTypeException

关于UnsupportedMimeTypeException

关于UnsupportedMimeTypeException
我浏览了多篇博文,大家都只是说你去忽略这个ContentType,就好用了,但是为具体为什么这么做,都没有给出解释。
下面总结以下,我通看其他人的文章,代码测试后的一些个人理解。


异常信息:

org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/json;charset=UTF-8, URL=***
	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)

看到这段之后直接定位错误问题,未知 content 类型.
据说有两个解决办法.
1. 在header指定"content-type"字段的类型
2. 通过ignoreContentType(true)方法,忽略ContentType

	//Case:
	String strJson = Jsoup.connect(url)
					  .ignoreContentType(true)
					  .execute()
					  .body();

对于UnsupportedMimeTypeException的一些个人理解:
首先,如果你访问一个正常页面的URL,返回的是一个HTML页面,所以不会发生这个异常。
但当你使用Jsoup去访问,页面内某个js发起的内部的二次请求的地址时,返回的是个json串,所以出现UnsupportedMimeTypeException。

所以分析这个异常想表达的意思应该是:jsoup解析时不支持该MimeType类型,只支持 HTML or XML

MimeType是该资源的媒体类型。

曾看到过一篇博文,对此做了探究,里面曾说过:

“如果检索内容的mime类型,无法解析成HTML,Jsoup将抛出一个异常,以避免解析如图片等资源”
“然而,如果你仅仅想得到这个字节或者作为一个字符串,可以通过禁用testwithconnection.ignoreContentType(true)”

原文URL:https://blog.csdn.net/qiyuexuelang/article/details/16879779?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-15.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-15.nonecase


虽然我的老师也曾说过,加上这个头信息,是比较保险的办法。
但是方法1怎样去实现?我没有找到具体案例。本人浏览网络尝试多种方法,使用一个header方法添加请求头信息,仍然无法规避该异常。
如果有哪位道友,知道怎么通过添加头信息解决这个问题,还请给我留言。

你可能感兴趣的:(java,jsoup)