Java Struts - 死链接检查器

时间:2011-10-23 10:12:13

标签: struts httpurlconnection

我需要检查一个设置的Intranet站点。我试着使用下面的代码。 (刚刚在互联网上通过随机搜索获得此代码)。我在我的动作类上调用了这个方法。但大多数进入异常部分的网站。我正在获取协议异常和UnknownHostException,即使我能够从浏览器中打开这些网站。

参考代码:

public boolean isLive(String link) {  
  HttpURLConnection urlConnection = null;  
  try {  
    URL url = new URL(link);  
    urlConnection = (HttpURLConnection) url.openConnection();  
    urlConnection.setRequestMethod("HEAD");  
    urlConnection.setConnectTimeout(5000); /* timeout after 5s if can't connect */  
    urlConnection.setReadTimeout(5000); /* timeout after 5s if the page is too slow */  
    urlConnection.connect();  
    String redirectLink = urlConnection.getHeaderField("Location");  
    if (redirectLink != null && !link.equals(redirectLink)) {  
      return isLive(redirectLink);  
    } else {  
      return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK;  
    }  
  } catch (Exception e) {  
    return false;  
  } finally {  
    if (urlConnection != null) {  
      urlConnection.disconnect();  
    }  
  }  
}  

2 个答案:

答案 0 :(得分:0)

我觉得代码没问题。 您的连接超时为5秒

urlConnection.setConnectTimeout(5000)   

任何超过5秒的查询都将被视为死链接。您的浏览器的超时时间比代码长得多,因此您可以在浏览器中浏览这些网站

答案 1 :(得分:0)

如果您收到协议异常和未知主机异常,我们需要了解更多以便提供帮助。您的机器是否配置为通过代理?您是否拥有应用容器用户无法共享的主机定义?

另外,考虑使用像HttpClient之类的东西来包装这样的东西,而不是手动完成;太多的工作。