Java JSoup获取内容类型,然后获取数据

Java JSoup获取内容类型,然后获取数据,java,http-headers,jsoup,Java,Http Headers,Jsoup,因此,目前我正在使用以下代码从url检索数据 Document doc = Jsoup.connect(url).get(); 在获取数据之前,我已经决定要获取内容类型,所以我使用以下方法来实现 Connection.Response res = Jsoup.connect(url).timeout(10*1000).execute(); String contentType = res.contentType(); 现在我想知道,这是两个独立的连接吗?这不是很有效吗?是否有一种方法可以在

因此,目前我正在使用以下代码从url检索数据

Document doc = Jsoup.connect(url).get();
在获取数据之前,我已经决定要获取内容类型,所以我使用以下方法来实现

Connection.Response res = Jsoup.connect(url).timeout(10*1000).execute();
String contentType = res.contentType(); 
现在我想知道,这是两个独立的连接吗?这不是很有效吗?是否有一种方法可以在一个连接中获取内容类型和文档数据

谢谢

Jsoup.connect(url).get()
Jsoup.connect(url).timeout(10*1000).execute()是两个独立的连接。也许你在找类似的东西

Response resp = Jsoup.connect(url).timeout(10*1000).execute();
String contentType = res.contentType(); 
然后将响应体解析为文档

Document doc = resp.parse();

无论如何,Jsoup默认情况下只解析
text/*
application/xml
application/xhtml+xml
,如果内容类型是其他类型,比如
application/pdf
,它将抛出
UnsupportedAdminTypeException
,因此您不必担心它。

如果不查看Jsoup的内部结构,我们就不知道它的存在。通常,当您只想获取文件的标题(本例中的内容类型)而不下载实际的文件内容时,可以使用HTTP GET方法,而不是对同一url使用GET方法。也许JSoupAPI允许您设置方法,但代码似乎没有这样做,所以我敢打赌它实际上获得了整个文件

HTTP规范允许客户端在以后重用该连接,它们被称为HTTP持久连接,并且它避免了为同一服务器的每次调用创建连接。但是,由于您没有在代码中处理连接,因此这取决于客户端Jsoup,以确保它不会在每次请求后关闭连接

我认为,如果您的代码决定如果文件不是您想要的内容类型,则不应该下载整个文件,那么创建两个连接的开销可以通过不下载整个文件来抵消