Почему этот код проверки ссылок Java не компилируется?

Я уже прочитал вопрос проверки ссылок, опубликованный в 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"));
  }
}

Спасибо всем за ответ. Я помещаю код, который компилируется здесь, для дальнейшего использования.


person Geo    schedule 31.03.2009    source источник
comment
Проголосовал за обновление кода с правильным решением.   -  person rich    schedule 30.07.2009


Ответы (2)


Вам необходимо импортировать соответствующие пакеты. В этом случае у вас должно быть следующее в верхней части файла:

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

Я также получаю предупреждение компилятора о следующем фрагменте кода:

 && !url.equals(redirectLink)

Он пытается приравнять URL-адрес (который является URL-адресом) к redirectLink (который является строкой). В Java он автоматически сравнивает строковое значение, когда это происходит, и toString фактически дает то, что вы хотите. Чтобы быть более точным в коде авторов, я бы изменил приведенный выше код на:

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

Примечание. В netbeans вы можете просто щелкнуть правой кнопкой мыши и выбрать параметр «Исправить импорт» (или нажать Ctrl + Shift + I), и он попытается найти правильные пакеты, которые вы используете в настоящее время, и автоматически вставить операторы импорта.

person sudorandom    schedule 31.03.2009

Код кажется правильным. Возможно, вы не импортировали необходимые пакеты. Будет полезно, если вы опубликуете ошибки компилятора, которые вы получаете.

person Deepak Singh Rawat    schedule 31.03.2009
comment
Спасибо большое. Я сделаю это рано утром. Спасибо. - person Geo; 31.03.2009