检查网址是否存在JAVA

时间:2016-02-25 09:54:16

标签: java url


我正在尝试检查用户输入的网址是否确实存在。 以下是我的尝试。

public static Boolean checkURLExists(String urlName) 
{
    Boolean urlCheck=false;
    try{
        URL url = new URL(urlName);
        HttpURLConnection.setFollowRedirects(false);
        HttpURLConnection huc = (HttpURLConnection) url.openConnection();
        huc.setRequestMethod("GET");
        int responseCode = huc.getResponseCode();
        String responseMessage = huc.getResponseMessage();
        char a=String.valueOf(Math.abs((long)huc.getResponseCode())).charAt(0);
        if ((a == '2' || a == '3')&& (responseMessage.equalsIgnoreCase("ok")||responseMessage.equalsIgnoreCase("found")||responseMessage.equalsIgnoreCase("redirect"))) {
            System.out.println("GOOD "+responseCode+" - "+a);
            urlCheck=true;
        } else {
            System.out.println("BAD "+responseCode+" - "+a);
        }
    }catch(Exception e){
                    e.printStackTrace();
    }
    return urlCheck;
}

上述代码的问题在于它返回http://www.gmail.comhttp://www.yahoo.co.in等作为无效网址,响应代码为301&响应消息“永久移动”但它们实际上重定向到其他网址,有没有办法检测到在浏览器中输入的网址会打开一个页面?

谢谢。

1 个答案:

答案 0 :(得分:1)

Web浏览器在看到301响应时的正常行为是遵循重定向。但是你似乎告诉你的测试代码不要这样做。如果您希望代码的行为(更多)像浏览器一样,请更改此

  HttpURLConnection.setFollowRedirects(false);

到这个

  HttpURLConnection.setFollowRedirects(true);