首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Jsoup 忽略 Content-Type 檢查解決 UnsupportedMimeTypeException 異常

     編輯:Java 綜合教學

Jsoup 忽略 Content-Type 檢查解決 UnsupportedMimeTypeException 異常

問題現象

使用 Jsoup 爬取某站點(如新浪)返回 JSON 時拋出:

Exception in thread "main" org.jsoup.UnsupportedMimeTypeException:
Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.
Mimetype=application/json; charset=utf-8, URL=...

原因

Jsoup 默認只接受 text/*、application/xml、application/xhtml+xml,遇到 application/json 直接拋異常。

解決方案

在獲取 Connection 時調用 ignoreContentType(true):

public static String httpGet(String url, String cookie) throws IOException {
    Connection con = Jsoup.connect(url).ignoreContentType(true); // 關鍵行
    con.header("Accept", "text/html, application/xhtml+xml, */*");
    con.header("Content-Type", "application/x-www-form-urlencoded");
    con.header("User-Agent", "Mozilla/5.0 ...");
    con.header("Cookie", cookie);
    Document doc = con.get();
    System.out.println(doc.title());
    return doc.toString();
}

原理

ignoreContentType(true) 告訴 Jsoup 跳過 MIME 類型校驗,直接解析響應體。適用於 API 返回 JSON/XML 等非標準 HTML 的場景。

注意

  • 關閉檢查後需自行確保響應內容可被 Jsoup 解析(如 JSON 需配合其他庫轉 Document)
  • 生產環境建議針對特定域名/路徑開啟,而非全局關閉
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved