我期待这段代码返回404,但它会产生输出:
“响应代码为200”
是否有可能学习如何区分现有和不存在的网页。 。 。非常感谢,
try
{
// create the HttpURLConnection
URL url = new URL("http://www.thisurldoesnotexist");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
System.out.println("Response code is " + connection.getResponseCode());
}
答案 0 :(得分:2)
编辑:我看到你打电话给openConnection()
而不是connect()
- 这可能是问题吗?我会期待 getResponseCode()
实际发出请求(如果还没有),但值得尝试...
这表明你可能有一些DNS解析器重定向到“帮助者”(垃圾邮件)页面,或类似的东西。
确切地了解这里发生了什么的最简单方法是使用Wireshark - 拥有它并捕获流量(仅限HTTP,使生活更轻松),然后运行您的代码。你应该能够看到正在发生的事情。
请注意,我不会期望404 - 因为这将涉及能够找到要与之交谈的Web服务器。如果您尝试转到不涉及的主机,则不应该存在HTTP响应 。我希望connect()
抛出异常。
答案 1 :(得分:1)
尝试添加“connection.connect();”或者查看返回的内容...
这可能是一个dns问题,即:你的dns被送到停车场......例如:freedns会这样做。
答案 2 :(得分:0)
你可以:
但这有点低,并且会增加复杂性,因为您需要通过套接字发出简单的GET请求。然后验证响应,以确保它实际上是在端口80上运行的HTTP服务器。
NMap也许可以帮到你。
答案 3 :(得分:0)
与@spgennard一样 - 我认为这很可能是DNS问题。
您也可能通过代理访问网络,代理正在做一些奇怪的事情。
诊断方法的目的是查看您获得的HTTP响应中的其他信息,尤其是响应正文。
答案 4 :(得分:0)
理想情况下,您应该收到此错误:
java.net.UnknownHostException: www.thisurldoesnotexist
但您的DNS提供商似乎已解析您的网址。
例如,在我公司的网络上运行带有URI“http:// profile /”的代码 员工档案。
如果您在Windows上检查是否有任何设置已更改,请检查等文件。