我正在嘗試使用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