Я пытаюсь найти все неработающие ссылки на веб-странице с помощью Java. Вот код:
private static boolean isLive(String link){
HttpURLConnection urlconn = null;
int res = -1;
String msg = null;
try{
URL url = new URL(link);
urlconn = (HttpURLConnection)url.openConnection();
urlconn.setConnectTimeout(10000);
urlconn.setRequestMethod("GET");
urlconn.connect();
String redirlink = urlconn.getHeaderField("Location");
System.out.println(urlconn.getHeaderFields());
if(redirlink != null && !url.toExternalForm().equals(redirlink))
return isLive(redirlink);
else
return urlconn.getResponseCode()==HttpURLConnection.HTTP_OK;
}catch(Exception e){
System.out.println(e.getMessage());
return false;
}finally{
if(urlconn != null)
urlconn.disconnect();
}
}
public static void main(String[] s){
String link = "http://www.somefakesite.net";
System.out.println(isLive(link));
}
Код из http://nscraps.com/Java/146-program-code-broken-link-checker.htm .
Этот код дает статус HTTP 200 для всех веб-страниц, включая неработающие. Например http://www.somefakesite.net/ дает следующие поля заголовка:
{null = [HTTP / 1.1 200 OK], Date = [Sun, 15 May 2011 18:51:29 GMT ], Transfer-Encoding = [chunked], Keep-Alive = [timeout = 4, max = 100], Connection = [Keep-Alive], Content-Type = [text / html], Server = [Apache / 2.2.15]. (Win32) PHP / 5.2.12], X-Powered-By = [PHP / 5.2.9-1]}
Даже если такие сайты не существуют, как классифицировать их как неработающую ссылку?