String urlString = "http://www.nbc.com/Heroes/novels/downloads/Heroes_novel_001.pdf";
URL url = new URL(urlString);
if(/* Url does not return 404 */) {
System.out.println("exists");
} else {
System.out.println("does not exists");
}
urlString = "http://www.nbc.com/Heroes/novels/downloads/Heroes_novel_190.pdf";
url = new URL(urlString);
if(/* Url does not return 404 */) {
System.out.println("exists");
} else {
System.out.println("does not exists");
}
Dies sollte gedruckt werden
exists
does not exists
PRÜFUNG
public static String URL = "http://www.nbc.com/Heroes/novels/downloads/";
public static int getResponseCode(String urlString) throws MalformedURLException, IOException {
URL u = new URL(urlString);
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.connect();
return huc.getResponseCode();
}
System.out.println(getResponseCode(URL + "Heroes_novel_001.pdf"));
System.out.println(getResponseCode(URL + "Heroes_novel_190.pdf"));
System.out.println(getResponseCode("http://www.example.com"));
System.out.println(getResponseCode("http://www.example.com/junk"));
Ausgabe
200
200
200
404
LÖSUNG
Fügen Sie die nächste Zeile vor .connect () hinzu, und die Ausgabe wäre 200, 404, 200, 404
huc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
java
url
http-status-code-404
Sergio del Amo
quelle
quelle
Antworten:
Vielleicht möchten Sie hinzufügen
HttpURLConnection.setFollowRedirects(false); // note : or // huc.setInstanceFollowRedirects(false)
wenn Sie der Umleitung nicht folgen möchten (3XX)
Anstatt ein "GET" zu machen, ist ein "HEAD" alles, was Sie brauchen.
huc.setRequestMethod("HEAD"); return (huc.getResponseCode() == HttpURLConnection.HTTP_OK);
quelle
das hat bei mir funktioniert:
URL u = new URL ( "http://www.example.com/"); HttpURLConnection huc = ( HttpURLConnection ) u.openConnection (); huc.setRequestMethod ("GET"); //OR huc.setRequestMethod ("HEAD"); huc.connect () ; int code = huc.getResponseCode() ; System.out.println(code);
danke für die vorschläge oben.
quelle
Verwenden Sie HttpUrlConnection, indem Sie
openConnection()
Ihr URL-Objekt aufrufen .getResponseCode () gibt Ihnen die HTTP-Antwort, sobald Sie von der Verbindung gelesen haben.
z.B
URL u = new URL("http://www.example.com/"); HttpURLConnection huc = (HttpURLConnection)u.openConnection(); huc.setRequestMethod("GET"); huc.connect() ; OutputStream os = huc.getOutputStream(); int code = huc.getResponseCode();
(nicht getestet)
quelle
An Ihrem Code ist nichts auszusetzen. Es ist die NBC.com, die dir Tricks macht. Wenn NBC.com feststellt, dass Ihr Browser keine PDF-Dateien anzeigen kann, sendet er einfach eine Webseite zurück, unabhängig davon, was Sie anfordern, auch wenn diese nicht vorhanden ist.
Sie müssen es zurücktrickeln, indem Sie ihm mitteilen, dass Ihr Browser in der Lage ist.
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13");
quelle
Basierend auf den gegebenen Antworten und Informationen in der Frage ist dies der Code, den Sie verwenden sollten:
public static boolean doesURLExist(URL url) throws IOException { // We want to check the current URL HttpURLConnection.setFollowRedirects(false); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); // We don't need to get data httpURLConnection.setRequestMethod("HEAD"); // Some websites don't like programmatic access so pretend to be a browser httpURLConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)"); int responseCode = httpURLConnection.getResponseCode(); // We only accept response code 200 return responseCode == HttpURLConnection.HTTP_OK; }
Natürlich getestet und funktioniert.
quelle