Wenn Sie beispielsweise ein Programm schreiben, das Dateien von einer externen Site herunterlädt und abruft, kann es je nach Site mit einem Browser heruntergeladen werden. Wenn Sie jedoch die URL über den Code verbinden, kann ein Fehler auftreten. Wenn ich überprüfe, wie es mit einem Browser mit DevTools of Chrome usw. heruntergeladen werden kann, wird der HTTP-Statuscode 302 unter der URL zurückgegeben, auf die ich zugegriffen habe. Dieses Mal werde ich eine Notiz über die Korrespondenz über diesen HTTP-Statuscode 302 schreiben.
Wie im Artikel Was ist der HTTP-Statuscode "302 Redirect" angegeben, soll 302 eine "temporäre Weiterleitung" haben. Im Fall von 302 ändert sich die im Browser angezeigte URL nicht. Wenn Sie also DevTools usw. nicht verwenden, wird der Benutzer nicht bemerken, dass Sie umgeleitet werden.
Wenn die 302-Antwort zurückgegeben wird, wird die URL des Umleitungsziels im "Speicherort" des Headers gespeichert. Daher können Sie erneut eine Verbindung zu der an diesem Speicherort gespeicherten URL herstellen. Der StackOverflow-Artikel unter hier stellt die Java-Implementierung vor.
Fast eine Kopie des obigen Artikels zum Stapelüberlauf, aber eine Beispielimplementierung.
Sample.java
public class Sample {
//Erhalten Sie CSV-Informationen von PhishTank
public void urlSample() {
try {
//Stellen Sie vor der Weiterleitung eine Verbindung zur URL her
URL url = new URL("https://xxxx/xxxxxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setInstanceFollowRedirects(false);
String redirectLocation = conn.getHeaderField("Location");
conn.disconnect();
//Stellen Sie die Verbindung mit der umgeleiteten URL wieder her
URL afterRedirectUrl = new URL(redirectLocation);
InputStreamReader in = new InputStreamReader(afterRedirectUrl.openStream());
//Danach werden die empfangenen Daten verarbeitet
} catch (Exception e) {
//Fehlerbehandlung
}
}
}
Recommended Posts