如何检查防火墙是否阻止了URL

时间:2014-08-12 15:32:52

标签: java url firewall httpconnection

我正在尝试检查网址是否可访问。我正在使用HttpURLConnection。现在我正在实施它。

public static boolean isUrlAccessible(final String urlToValidate)
            throws WAGException {
        URL url = null;
        HttpURLConnection huc = null;
        int responseCode = -1;
        try {
            url = new URL(urlToValidate);
            huc = (HttpURLConnection) url.openConnection();
            huc.setRequestMethod("HEAD");
            huc.connect();
            responseCode = huc.getResponseCode();
        } catch (final UnknownHostException e) {
            e.printStackTrace();
            System.out.println(e.getMessage()+" "+e.getLocalizedMessage());
            return false;
        } catch (final MalformedURLException e){
            e.printStackTrace();
            System.out.println(e.getMessage()+" "+e.getLocalizedMessage());
            return false;
        } catch (ProtocolException e) {
            e.printStackTrace();
            System.out.println(e.getMessage()+" "+e.getLocalizedMessage());
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println(e.getMessage()+" "+e.getLocalizedMessage());
            return false;
        } finally {
            if (huc != null) {
                huc.disconnect();
            }
        }
        return responseCode == 200;
    }

当Internet关闭时会抛出UnknownHostException,我想知道如何检查防火墙是否阻挡了URL,这就是为什么我得到异常,而不是因为URL无法访问。此外,我只是检查响应代码200,以确保URL可访问。我还需要进行其他检查吗?

3 个答案:

答案 0 :(得分:2)

  

当Internet关闭时,它会抛出UnknownHostException

不,它会导致 DNS 关闭或DNS不知道主机。

  

我想知道如何检查防火墙是否阻挡了网址

您将获得连接超时。在极少数情况下,使用过时的硬件可能会导致拒绝连接,但我还没有听说过这个世纪。但是如果主机关闭,你也会得到连接超时。

  

我只是检查响应代码200以确保可以访问该URL。我还需要进行其他检查吗?

没有。但URL并未被防火墙阻止。 端口被防火墙阻止。

答案 1 :(得分:0)

我在防火墙阻止连接时经常看到的异常是“java.net.NoRouteToHostException”。尝试捕捉它,看看它是否有帮助。

答案 2 :(得分:0)

正如其他人所说,答案是"它取决于"。 例如,我们的外围防火墙会进行重定向,因为我们希望向用户显示自定义屏幕。 在这种情况下,我会尝试查看HTTP状态代码(30x)。

我认为为这样的事情编写通用函数很困难,您需要根据您的设置进行定制或使其非常易于配置。

请确保尽可能保持通用。 例如,如果您的代码假定重定向到特定的URL,那么一旦基础结构发生变化(这种情况比预期更频繁),这将会发生故障。

相关问题