You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jsoup爬取需登录网站时遭遇UnsupportedMimeTypeException异常求助

解决 Jsoup 抛出的 UnsupportedMimeTypeException 错误

你遇到的这个问题很典型——Jsoup 默认只会处理文本类、XML 或 XHTML 类型的响应,但你请求的 https://sso.mims.com/Account/Signin 返回了 application/json 格式的内容,直接触发了这个异常。结合 URL 是登录页面来看,大概率是因为没通过身份验证,服务器返回了 JSON 格式的错误提示或跳转指令,而非你预期的登录页面 HTML。

下面给你两个针对性的解决思路:

1. 临时绕过 MIME 类型检查(快速测试用)

如果只是想先拿到响应内容看看服务器返回了什么,可以在 Jsoup 请求里添加 ignoreContentType(true) 强制忽略 MIME 类型限制:

Document doc = Jsoup.connect("https://sso.mims.com/Account/Signin")
    .ignoreContentType(true)
    .get();
// 把响应转成字符串查看具体JSON内容
String jsonContent = doc.text();
System.out.println(jsonContent);

通过这种方式,你就能知道服务器到底返回了什么信息(比如是否要求携带登录凭证、是否有重定向指令)。

2. 正确处理身份验证(长期解决方案)

既然目标是爬取需要身份验证的网站,核心还是要走完登录流程获取有效会话:

  • 第一步:先访问登录页面,获取页面内的 CSRF 令牌(多数网站登录都需要这个验证字段),这时候服务器应该返回正常的 HTML,不会触发 MIME 错误。
  • 第二步:构造登录请求,携带用户名、密码、CSRF 令牌等参数,发送 POST 请求到登录接口。
  • 第三步:保存登录后的会话 Cookie,后续爬取其他页面时带上这些 Cookie,服务器才会返回你需要的内容。

举个简单的登录流程示例:

// 1. 获取登录页面和CSRF令牌
Connection.Response loginPageResponse = Jsoup.connect("https://sso.mims.com/Account/Signin")
    .method(Connection.Method.GET)
    .execute();
Document loginDoc = loginPageResponse.parse();
// 假设CSRF令牌在name为__RequestVerificationToken的input标签里
String csrfToken = loginDoc.select("input[name=__RequestVerificationToken]").val();

// 2. 发送登录请求
Connection.Response loginResponse = Jsoup.connect("https://sso.mims.com/Account/Signin")
    .cookies(loginPageResponse.cookies()) // 带上登录页面的Cookie
    .data("__RequestVerificationToken", csrfToken)
    .data("Username", "你的用户名")
    .data("Password", "你的密码")
    .method(Connection.Method.POST)
    .execute();

// 3. 用登录后的Cookie爬取目标页面
Document targetDoc = Jsoup.connect("你需要爬取的目标URL")
    .cookies(loginResponse.cookies())
    .get();

注意:不同网站的登录参数可能有差异,你可以用浏览器开发者工具(F12)查看真实的登录请求参数,再对应调整代码。

内容的提问来源于stack exchange,提问作者serendipity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:06:00