1

我正在使用 Selenium 2 Java API 与网页交互。我的问题是:如何检测链接目标的内容类型?

基本上,这就是背景:在单击链接之前,我想确保响应是 HTML 文件。如果没有,我需要以另一种方式处理它。因此,假设有一个 PDF 文件的下载链接。应用程序应该直接读取该 URL 的内容,而不是在浏览器中打开它。

目标是让应用程序自动知道当前位置是 HTML、PDF、XML 还是其他任何内容,以使用适当的解析器从文档中提取有用信息。

更新

增加赏金:将奖励给允许我获取给定 URL 的内容类型的最佳解决方案。

4

3 回答 3

5

正如 Jochen 所建议的那样,在不下载内容的情况下获取 Content-type 的方法是HTTP HEAD,而 selenium webdrivers 似乎不提供这样的功能。您必须找到另一个库来帮助您获取 url 的内容类型。

可以做到这一点的 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 接口的文档包含一个很好的示例。

于 2011-04-03T08:15:37.977 回答
0

您可以从 DOM 中检索所有 URL,然后解析每个 URL 的最后几个字符(使用 java 正则表达式)以确定链接类型。

您可以解析从最后一个点开始的字符。例如,在 urlhttp://yoursite.com/whatever/test.pdf中,提取pdf,并相应地强制执行您的测试逻辑。

我是否过度简化了您的问题?

于 2011-03-31T18:55:22.927 回答
0

您可以弄清楚内容类型将处理传入的数据。不知道为什么需要先弄清楚这一点。如果是这样,请使用 HEAD 方法并查看 Content-Type 标头。

于 2011-03-27T16:50:04.577 回答