Мне нужно проверить, существует ли URL или нет. Я хочу написать сервлет для этого, то есть проверить, существует ли URL или нет. Если введенный URL-адрес не существует, он должен вернуть какое-то сообщение.
Лучшее решение для 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
Можно попробовать метод HTTP HEAD, чтобы проверить, возвращает ли сервер код состояния 200 для определенного URL-адреса и действовать соответствующим образом.
HEAD
200
См. http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol и прокрутите вниз до Методы запроса .
Я использовал этот скрипт 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
Вы можете установить соединение, получить входной поток обратно и проверить на ноль.