2

执行以下代码:

Jsoup.connect(baseURL + dataJSSrc).execute();

抛出异常:

org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/x-javascript, URL=http://www.abc.com/playdata/206/8910.js?44613.77

但是当我使用

URLConnection conn = new URL(baseURL + dataJSSrc).openConnection();

没关系!

在下面的代码中

System.out.println(conn.getContentType()); // out put 'application/x-javascript'

Jsoup只能用于下载HTML或XML吗?

4

2 回答 2

7

虽然我不同意 BalusC 的回答,但您可以使用 Jsoup 下载您喜欢的任何内容。默认情况下,如果 Jsoup 检索具有无法解析为 HTML 的 mime 类型的内容,Jsoup 将抛出异常,以避免解析例如图像。connection.ignoreContentType(true)但是,如果您只想获取字节或字符串,则可以禁用该测试:

String script = Jsoup.connect(jsUrl).ignoreContentType(true).execute().body();

或者

byte[] bytes = Jsoup.connect(imageUrl).ignoreContentType(true).execute().bodyAsBytes();

您将使用成熟的 HTTP 客户端获得更多控制权,但这种方法在紧要关头很有用。

于 2012-09-30T01:35:16.077 回答
1

Jsoup 被设计为 HTML/XML 解析器,而不是纯 HTTP 客户端。如果您需要下载一些非 HTML/XML 文件,请使用普通的 HTTP 客户端,而不是 HTML/XML 解析器。

使用正确的工具完成工作。

于 2012-09-29T11:36:46.517 回答