我正在尝试检查用户输入的网址是否确实存在。
以下是我的尝试。
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.com或http://www.yahoo.co.in等作为无效网址,响应代码为301&响应消息“永久移动”但它们实际上重定向到其他网址,有没有办法检测到在浏览器中输入的网址会打开一个页面?
谢谢。
答案 0 :(得分:1)
Web浏览器在看到301响应时的正常行为是遵循重定向。但是你似乎告诉你的测试代码不要这样做。如果您希望代码的行为(更多)像浏览器一样,请更改此
HttpURLConnection.setFollowRedirects(false);
到这个
HttpURLConnection.setFollowRedirects(true);