Java JSoup获取内容类型,然后获取数据
因此,目前我正在使用以下代码从url检索数据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(); 现在我想知道,这是两个独立的连接吗?这不是很有效吗?是否有一种方法可以在
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,以确保它不会在每次请求后关闭连接
我认为,如果您的代码决定如果文件不是您想要的内容类型,则不应该下载整个文件,那么创建两个连接的开销可以通过不下载整个文件来抵消