日期:2014-05-17  浏览次数:20832 次

求教如何判断url是否可用
之前网上搜了下,大把的程序大概都是这样的思路:
public static boolean urlValidate(String inputUrl){
boolean flag = false;
try {
urlStr = new URL(inputUrl);
connection = (HttpURLConnection) urlStr.openConnection();
HttpURLConnection.setFollowRedirects(false);
state = connection.getResponseCode();
if(state==200){
flag = true;
}
} catch (Exception e) {
flag = false;
return flag;

return flag;
}

但是如果浏览器的页面做了重定向,即使输入的url不可用,返回的state依旧是200,所以无法满足要求。


上面的两张图片,第一张是我输入的一个错误的url链接,可以看到返回的状态码是存在问题的。
而第二张是进行了重定向之后的产生的链接, 不止一个。此时返回的状态吗是200,而上面程序的state值是200,而不是302,求教我怎么能拿到输入链接产生的状态码,或者提供一个新思路来判断url的可用性呢?求教大家

------解决方案--------------------
顺序调整下试试
HttpURLConnection.setFollowRedirects(false); 
connection = (HttpURLConnection) urlStr.openConnection();
------解决方案--------------------
好像很难实现!
------解决方案--------------------
根据状态码,重定向后再取一下地址做判断就行了。如何获取重定向的地址http://blog.sina.com.cn/s/blog_53b720bb01014wb0.html你参考一下。
------解决方案--------------------
主要是判断请求发送后服务器返回的状态码
------解决方案--------------------
引用:
Quote: 引用:

主要是判断请求发送后服务器返回的状态码
这个是实现不了的,因为他返回的状态码总是最后一个,如果对错误链接进行了重定向,状态码依旧是200

setFollowRedirects(false)无效?
------解决方案--------------------
考虑重定向目测不好搞,感觉测试的链接应该正常
------解决方案--------------------
这样的话比如用java调用cmd的ping指令获取网址的首页去除http://协议