java – 检查链接是否损坏
我试图使用
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状态.例如 {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(它显示浏览器原始消息)对其进行测试. 编辑回答作者的评论(因为它太长而不适合评论): >对于重定向的DNS故障(DNS无法找到的URL,您将被重定向到另一个页面).所有重定向(如果您被重定向)可能会转到同一页面(由您的ISP / DNS提供商提供),您可以检查它.当然,如果您尝试使用其他ISP / DNS提供商,页面可能会有所不同.如果您没有被重定向,那么您将收到连接错误.>对于具有有效DNS但无法正常工作的服务器(例如,google.com发生故障),应该存在连接错误.>对于服务器中缺少的资源(“页面”),它更加困难. 404表示它已损坏,但如果服务器没有发送它,则无需再做.重定向可能有助于将链接标记为可疑,但应稍后手动检查,因为它不仅用于捕获缺失的链接(例如,www.google.com重定向我www.google.es) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |