Ermitteln der umgeleiteten URL in Java
Beim Zugriff auf Webseiten mit URLConnection kommt es häufig zu Weiterleitungen. Dies geschieht, wenn eine URL auf ein anderes Ziel verweist. Um die umgeleitete URL zu bestimmen, müssen wir verstehen, wie HTTP-Weiterleitungen funktionieren.
Normalerweise antwortet ein Server mit einem 3xx-Statuscode (z. B. 301, 302), der auf eine Umleitung hinweist. Die Antwort enthält ein Header-Feld „Location“, das das neue Ziel angibt. Die URLConnection folgt jedoch nicht automatisch Weiterleitungen.
Zugriff auf die umgeleitete URL
Um die umgeleitete URL zu erhalten, können wir nach der Initialisierung manuell getInputStream() für die URLConnection aufrufen Verbindung. Diese Aktion erzwingt den Verbindungsaufbau und der Server sendet die endgültige Antwort, einschließlich des „Location“-Headers.
URLConnection con = new URL(url).openConnection(); con.connect(); System.out.println("Original URL: " + con.getURL()); InputStream is = con.getInputStream(); System.out.println("Redirected URL: " + con.getURL()); is.close();
Zugriff auf den Location-Header
In einigen Fällen , möchten wir möglicherweise auf den Header „Location“ zugreifen, bevor wir den umgeleiteten Inhalt abrufen. Zu diesem Zweck können wir HttpURLConnection verwenden und setInstanceFollowRedirects(false):
HttpURLConnection con = (HttpURLConnection) (new URL(url).openConnection()); con.setInstanceFollowRedirects(false); con.connect(); System.out.println("Response code: " + con.getResponseCode()); String location = con.getHeaderField("Location"); System.out.println("Location header: " + location);setzen
Das obige ist der detaillierte Inhalt vonWie ermittelt man die umgeleitete URL in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!