奇怪的HtmlUnit行为(错误?)

时间:2010-02-11 14:15:16

标签: java htmlunit

看看这个:

WebClient client = new WebClient();
WebRequestSettings wrs = new WebRequestSettings(new URL("http://stackoverflow.com/ping/?what-the-duck?"), HttpMethod.HEAD);
client.getPage(wrs);

运行此代码会导致抛出FileNotFoundException,因为页面上的HTTP状态代码是404 使用GET方法再次获取同一页面,User-Agent设置为Java-...。为什么要获取页面(“正常”状态代码不会发生这种情况)?这是一个错误吗?感谢

以下是整个服务器响应:

HTTP/1.1 404 Not Found
Cache-Control: private
Content-Length: 7502
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
Date: Thu, 11 Feb 2010 14:12:11 GMT

它告诉客户哪里有什么东西?我怎样才能强迫WebClient忽略它呢?

这是HTTPDebugger的屏幕截图: alt text http://i49.tinypic.com/11lsf1y.png 这里的问题是我不明白为什么第二个请求被发送,为什么它与不同的用户发送。

1 个答案:

答案 0 :(得分:0)

执行HEAD请求 - 返回null内容的响应。然而,HtmlUnit尝试创建一个页面。为此,它使用url和content(为null)创建一个输入源,并将其提供给解析器。当解析器尝试解析输入源时,它会看到空内容并使用URL重新检索内容。所以它实际上不是HtmlUnit发出第二个请求,它是XML解析器。这就是用户代理是Java而不是HttpClient的原因。