Проверка, существует ли URL или нет - PullRequest
8 голосов
/ 14 ноября 2010

Мне нужно проверить, существует ли URL или нет. Я хочу написать сервлет для этого, то есть проверить, существует ли URL или нет. Если введенный URL-адрес не существует, он должен вернуть какое-то сообщение.

Ответы [ 4 ]

25 голосов
/ 14 ноября 2010

Лучшее решение для HTTP:

public static boolean exists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      // note : you may also need
      //        HttpURLConnection.setInstanceFollowRedirects(false)
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }  

Если вы ищете какой-либо другой URL, попробуйте этот код

  public static boolean exists(String URLName){
      boolean result = false;
      try {
          url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD/");
          //url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD123/");//this will fail

          input = url.openStream();

           System.out.println("SUCCESS");
           result = true;

            } catch (Exception ex) {
               Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
            }
         return result;
  }

Источник : http://www.rgagnon.com/javadetails/java-0059.html

1 голос
/ 14 ноября 2010

Можно попробовать метод HTTP HEAD, чтобы проверить, возвращает ли сервер код состояния 200 для определенного URL-адреса и действовать соответствующим образом.

См. http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol и прокрутите вниз до Методы запроса .

0 голосов
/ 15 июля 2015

Я использовал этот скрипт bash для проверки URL, но нужно поместить все файлы в файл "urls.csv"

#!/bin/bash

###############################################
# mailto: ggerman@gmail.com
# checkurls
# https://github.com/ggerman/checkurls/
# require curl
###############################################

url() {
  cat urls.csv | 
  replace  | 
  show
}

replace() {
  tr ',' ' '
}

show() {
  awk '{print $1}'
}

url | \
while read CMD; do
  echo $CMD
  curl -Is $CMD | head -n 1
done
0 голосов
/ 14 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...