我正在使用Selenium 2 Java API与网页进行交互。我的问题是:如何检测链接目标的内容类型?
基本上,这是背景:单击链接之前,我想确保响应是HTML文件。如果没有,我需要以其他方式处理它。因此,假设有一个PDF文件的下载链接。应用程序应直接读取该URL的内容,而不是在浏览器中打开它。
我们的目标是拥有一个能够自动知道当前位置是HTML,PDF,XML或其他类型的应用程序,以便使用适当的解析器从文档中提取有用的信息。
更新资料
额外的奖励:将奖励给最佳解决方案,使我能够获得给定URL的内容类型。
正如Jochen所建议的那样,在不下载内容的情况下获取Content-type的方法是HTTP HEAD,而硒webdrivers似乎没有提供这种功能。您将必须找到另一个库来帮助您获取URL的内容类型。
HTTP HEAD
可以做到这一点的Java库是Apache HttpComponents,尤其是 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,HttpClient接口的文档包含了一个很好的示例。