我试图使用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));
}
Run Code Online (Sandbox Code Playgroud)
代码参考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-By = [PHP/5.2.9-1] }
即使这些网站不存在,如何将其归类为断链?
也许问题在于,目前许多网络服务器和 DNS 提供商都会检测到这些“损坏”的链接,并将您重定向到他们的“未找到”页面。
针对您知道发送 404 代码的 URL 进行测试(它显示浏览器原始消息)。
编辑以回答作者的评论(因为它太长,无法容纳评论):我没有看到您的问题的简单答案,但有几种不同类型的失败:
| 归档时间: |
|
| 查看次数: |
5697 次 |
| 最近记录: |