我已经阅读了SO中发布的link checker问题。如果有更多这类问题,我错过了,我很抱歉。
我们需要以一种非常简单的方式和脚本方式在website中找到损坏的链接,这样我们就可以记录被破坏的链接。我找到了一个blog post,其中包含一些用java编写的代码,它将完全符合我的需要,而且我的基本知识让我编译它,但每次都会出错。我想也许这里的某个人可能会指导我为什么代码不能编译。
以下是代码:
import java.net.HttpURLConnection;
import java.net.URL;
class links
{
private static boolean isLive(String link) {
HttpURLConnection urlConnection = null;
try {
URL url = new URL(link);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("HEAD");
urlConnection.connect();
String redirectLink = urlConnection.getHeaderField("Location");
if (redirectLink != null && !url.equals(redirectLink)) {
return isLive(redirectLink);
} else {
return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK;
}
} catch (Exception e) {
return false;
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
}
public static void main(String[] args) {
System.out.println(isLive("http://www.fakelink.net"));
}
}
感谢所有回复。我把编译的代码放在这里,供将来参考。
答案 0 :(得分:1)
您需要导入正确的包。在这种情况下,您应该在文件顶部有以下内容:
import java.net.HttpURLConnection;
import java.net.URL;
我还在以下代码中收到编译器警告:
&& !url.equals(redirectLink)
它试图将url(这是一个URL)等同于redirectLink(这是一个String)。在Java中,它会在发生这种情况时自动比较字符串值,而toString实际上会提供您想要的值。为了在作者代码中更精确,我将上面的代码更改为:
&& !url.toExternalForm().equals(redirectLink)
注意:在netbeans中,您只需右键单击并选择Fix Imports选项(或按Ctrl + Shift + I),它将尝试查找您当前使用的正确包并自动插入import语句。
答案 1 :(得分:0)
代码似乎是正确的。可能是您没有导入所需的包。如果您可以发布您正在获得的编译器错误,将会有所帮助。