gpt4 book ai didi

java - 奇怪的 HtmlUnit 行为(错误?)

转载 作者:行者123 更新时间:2023-11-29 09:25:42 25 4
gpt4 key购买 nike

看看这个:

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这里的问题是我不明白为什么要发送第二个请求以及为什么使用不同的用户代理发送它。

最佳答案

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

关于java - 奇怪的 HtmlUnit 行为(错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2244963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com