【问题标题】:Java HTTP getResponseCode returns 200 for non-existent URLJava HTTP getResponseCode 为不存在的 URL 返回 200
【发布时间】:2011-06-02 06:35:24
【问题描述】:

我原以为这段代码会返回 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());
    }

【问题讨论】:

  • 如果你得到了 200 的回报,那么页面确实存在...
  • 试试http://www.fackurl.com 看看你得到了什么可能你会得到异常

标签: java networking


【解决方案1】:

编辑:我看到你打电话给openConnection() 但不是connect() - 这可能是问题吗?我会期望 getResponseCode() 实际提出请求(如果还没有),但值得一试......


这表明您可能有一些 DNS 解析器,它重定向到“帮助”(垃圾邮件)页面或类似的东西。

确切了解这里发生了什么的最简单方法是使用Wireshark - 启动并捕获流量(仅限 HTTP,以使生活更轻松),然后运行您的代码。您应该能够看到发生了什么。

请注意,我没想到会出现 404 - 因为这将涉及能够找到一个 Web 服务器来与之交谈。如果您尝试访问不涉及的主机,则根本不应该有 HTTP 响应。我希望connect() 会抛出异常。

【讨论】:

    【解决方案2】:

    尝试添加“connection.connect();”或者查看返回的内容...

    这可能是一个 dns 问题,即:您的 dns 正在被发送到一个停车场......例如:freedns 会这样做。

    【讨论】:

      【解决方案3】:

      你可以:

      1. 从页面的主机解析IP
      2. 尝试使用普通套接字连接到已解析 IP 上的端口 80

      这有点低级别,但是会增加复杂性,因为您需要通过套接字发出简单的 GET 请求。然后验证响应,以确保它实际上是在端口 80 上运行的 HTTP 服务器。

      NMap 或许可以在这里为您提供帮助。

      【讨论】:

        【解决方案4】:

        理想情况下,您应该收到此错误:

        java.net.UnknownHostException: www.thisurldoesnotexist
        

        但您的 URL 似乎已由您的 DNS 提供商解析。

        例如,在我公司的网络上运行您的代码,显示 URI“http://profile/” 员工资料。

        如果您在 Windows 上,还请检查 etc.home 文件以检查是否有任何设置已更改。

        【讨论】:

          【解决方案5】:

          就像 @spgennard - 我认为这很可能是 DNS 问题。

          • 您选择的 URL 归 DNS 推测者所有。
          • 您选择的 URL 已被 DNS 提供商“停放”。
          • 您的 ISP 将您的 DNS 结果弄乱了,以便将您的浏览器发送到某个搜索页面。

          也有可能你正在通过代理访问网络,而代理正在做一些奇怪的事情。

          诊断此问题的方法是查看您获得的 HTTP 响应中的其他信息,尤其是响应正文。

          【讨论】:

            猜你喜欢
            • 2013-10-11
            • 2016-07-24
            • 2012-06-18
            • 2014-01-24
            • 1970-01-01
            • 2018-09-11
            • 2019-07-18
            • 1970-01-01
            相关资源
            最近更新 更多