我正在使用Selenium 2 Java API与网页进行交互。我的问题是:我如何检测链接目的地的内容类型?
基本上,这是背景:在点击链接之前,我想确保响应是HTML文件。如果没有,我需要以另一种方式处理它。所以,假设有一个PDF文件的下载链接。应用程序应该直接读取该URL的内容,而不是在浏览器中打开它。
目标是让应用程序自动知道当前位置是HTML,PDF,XML还是其他任何使用适当的解析器来从文档中提取有用信息。
更新
添加赏金:将奖励给最佳解决方案,以便我获取给定网址的内容类型。
答案 0 :(得分:5)
正如Jochen所说,在不下载内容的情况下获取Content-type的方式是HTTP HEAD
,而selenium webdrivers似乎不提供类似的功能。您必须找到另一个库来帮助您获取网址的内容类型。
可以执行此操作的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);
项目发布JavaDoc for HttpClient,HttpClient interface的文档包含一个很好的例子。
答案 1 :(得分:0)
您可以找出将处理数据的内容类型。 不知道为什么你需要先解决这个问题。 如果是这样,请使用HEAD方法并查看Content-Type标题。
答案 2 :(得分:0)
您可以从DOM中检索所有URL,然后解析每个URL的最后几个字符(使用java正则表达式)来确定链接类型。
您可以解析最后一个点的字符。例如,在网址http://yoursite.com/whatever/test.pdf
中,提取pdf
,并相应地强制执行您的测试逻辑。
我是否过度简化了您的问题?