执行以下代码:
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吗?
答案 0 :(得分:7)
虽然我不同意BalusC的回答,但您可以使用Jsoup下载任何您喜欢的内容。默认情况下,如果Jsoup检索具有无法解析为HTML的mime类型的内容,则会抛出异常,以避免解析例如图片。但是,如果您只想获取字节或字符串,则可以使用connection.ignoreContentType(true)
禁用该测试:
String script = Jsoup.connect(jsUrl).ignoreContentType(true).execute().body();
或
byte[] bytes = Jsoup.connect(imageUrl).ignoreContentType(true).execute().bodyAsBytes();
使用完整的HTTP客户端可以获得更多控制权,但这种方法在紧要关系中非常有用。
答案 1 :(得分:1)
Jsoup被设计为HTML / XML解析器,而不是纯HTTP客户端。如果您需要下载一些非HTML / XML文件,那么请使用普通的HTTP客户端,而不是HTML / XML解析器。
使用正确的工具完成工作。