1

我已经阅读了SO 中发布的链接检查器问题。如果还有更多此类问题而我错过了,我深表歉意。

我们需要以一种非常简单且可编写脚本的方式在网站中找到损坏的链接,以便我们可以记录损坏的链接。我发现了一篇博客文章,其中包含一些用 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"));
  }
}

感谢所有的回复。我把编译的代码放在这里,以供将来参考。

4

2 回答 2

1

您需要导入正确的包。在这种情况下,您应该在文件顶部有以下内容:

import java.net.HttpURLConnection;
import java.net.URL;

我还在以下代码中收到编译器警告:

 && !url.equals(redirectLink)

它试图将 url(它是一个 URL)等同于 redirectLink(它是一个字符串)。在 Java 中,它会在发生这种情况时自动比较字符串值,并且 toString 实际上给出了你想要的。为了在作者代码中更准确,我会将上面的代码更改为:

 && !url.toExternalForm().equals(redirectLink)

注意:在 netbeans 中,您只需右键单击并选择选项 Fix Imports(或按 Ctrl + Shift + I),它将尝试找到您当前正在使用的正确包并自动插入导入语句。

于 2009-03-31T04:25:37.253 回答
0

代码似乎正确。可能是您没有导入所需的包。如果您可以发布您收到的编译器错误,这将有所帮助。

于 2009-03-31T04:18:51.480 回答