关于Jsoup的异常org.jsoup.UnsupportedMimeTypeException

    技术2023-09-24  77

    关于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方法添加请求头信息,仍然无法规避该异常。 如果有哪位道友,知道怎么通过添加头信息解决这个问题,还请给我留言。

    Processed: 0.009, SQL: 9