我正在尝试使用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,2011年5月15日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-通过= [PHP/5.2.9-1]}
即使不存在这样的站点,如何将它归类为一个破碎的链接?
你100%确定你正在测试什么网站?尝试在该方法的顶部添加一个'System.out.println(link);'。 – Mat 2011-05-15 19:03:18
@Mat:是的,我确实添加了print语句,它正在测试从主 – user754740 2011-05-16 06:28:00