我正在使用Selenium 2 Java API与网页进行交互。我的问题是: 如何检测链接目标的内容类型?
基本上,这是背景:在单击链接之前,我想确保 响应是HTML文件。如果没有,我需要以其他方式处理它。 因此,假设有一个PDF文件的下载链接。应用程序应 直接读取该URL的内容,而不是在浏览器中打开它。
我们的目标是拥有一个能够自动知道 当前位置是HTML,PDF,XML或其他类型的应用程序,以便使用适当的解析器 从文档中提取有用的信息。
更新资料
额外的奖励:将奖励给最佳解决方案,使我能够获得 给定URL 的内容类型。
正如Jochen所建议的那样,在不下载内容的情况下获取Content-type的方法 是HTTP HEAD,而硒webdrivers似乎没有提供这种 功能。您将必须找到另一个库来帮助您 获取URL的内容类型。
可以做到这一点的Java库是ApacheHttpComponents,尤其是HttpClient.
(以下代码未经测试)
HttpClient httpclient = new DefaultHttpClient(); HttpHead httphead = new HttpHead("http://foo/bar"); HttpResponse response = httpclient.execute(httphead); BasicHeader contenttypeheader = response.getFirstHeader("Content-Type"); System.out.println(contenttypeheader);
该项目为 HttpClient JavaDoc forHttpClient, the documentation for the HttpClient interface 的文档包含了一个很好的 示例。