Rufen Sie die URL des HTTP-Umleitungsziels in Java ab

Überblick

Java 11 Version

Speichern Sie den folgenden Inhalt unter dem Dateinamen GetRedirect.java.

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Optional;

public class GetRedirect {

  public static void main(String[] args) throws Exception {

    //Befehlszeilenargumente abrufen
    String srcUrl = args[0];

    //Umleitungsziel-URL abrufen
    Optional<String> redirectUrl = getRedirectUrl(srcUrl);

    //Ausgabe-Umleitungsziel-URL ausgeben
    redirectUrl.ifPresent(url -> System.out.println(url));
  }

  //Rufen Sie die Weiterleitungsziel-URL ab
  public static Optional<String> getRedirectUrl(String srcUrl) throws URISyntaxException, IOException, InterruptedException {

    //Erstellen Sie HTTP-Anforderungsinformationen
    HttpRequest req = HttpRequest.newBuilder(new URI(srcUrl)).GET().build();

    //HTTP-Anfrage
    //Beachten Sie, dass HttpClient keine Ausnahme für 4xx und 5xx auslöst
    HttpClient client = HttpClient.newBuilder()
      .version(HttpClient.Version.HTTP_1_1)
      .followRedirects(HttpClient.Redirect.NEVER) //Einstellung, um nicht automatisch umzuleiten
      .build();
    HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());

    //Abrufen des Standortheaders aus der HTTP-Antwort
    return res.headers().firstValue("location");
  }
}

Ausführungsbeispiel von Java 11 (AdoprOpenJDK 11.0.8) + macOS Catalina.

$ java GetRedirect.java https://bit.ly/3kmTOkc
https://t.co/yITSBp4ino
$ java GetRedirect.java https://t.co/yITSBp4ino
https://qiita.com/niwasawa
$ java GetRedirect.java https://qiita.com/niwasawa

Java 8 Version

Speichern Sie den folgenden Inhalt unter dem Dateinamen GetRedirect.java.

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class GetRedirect {

  public static void main(String[] args) throws IOException {

    //Befehlszeilenargumente abrufen
    String srcUrl = args[0];

    //Umleitungsziel-URL abrufen
    String redirectUrl = getRedirectUrl(srcUrl);

    //Ausgabe-Umleitungsziel-URL ausgeben
    if (redirectUrl != null) {
      System.out.println(redirectUrl);
    }
  }

  //Rufen Sie die Weiterleitungsziel-URL ab
  public static String getRedirectUrl(String srcUrl) throws IOException {
    //Beachten Sie, dass 4xx und 5xx keine Ausnahme auslösen
    HttpURLConnection con = (HttpURLConnection) new URL(srcUrl).openConnection();
    con.setRequestMethod("GET");
    con.setInstanceFollowRedirects(false); //Einstellung, um nicht automatisch umzuleiten
    con.connect();
    //Abrufen des Standortheaders aus der HTTP-Antwort
    String location = con.getHeaderField("location");
    con.disconnect();
    return location;
  }
}

Ausführungsbeispiel von Java 8 (AdoprOpenJDK 1.8.0_265) + macOS Catalina.

kompilieren.

$ javac GetRedirect.java

Lauf.

$ java GetRedirect https://bit.ly/3kmTOkc
https://t.co/yITSBp4ino
$ java GetRedirect https://t.co/yITSBp4ino
https://qiita.com/niwasawa
$ java GetRedirect https://qiita.com/niwasawa

Referenzmaterial

Recommended Posts

Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Rufen Sie die URL des HTTP-Umleitungsziels in Ruby ab
Quelle zum Abrufen der Umleitungsquell-URL in Java
Holen Sie sich das Ergebnis von POST in Java
Rufen Sie die öffentliche URL der privaten Datei von Flickr in Java ab
[Java] So erhalten Sie die URL der Übergangsquelle
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
[Java] Ordnen Sie die Daten des vergangenen Montags und Sonntags der Reihe nach an
[Java] Ermittelt den Tag eines bestimmten Tages
So erhalten Sie das Datum mit Java
Die Geschichte des Schreibens von Java in Emacs
So ermitteln Sie die Länge einer Audiodatei mit Java
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Über die Idee anonymer Klassen in Java
[Java] Zugriff auf die signierte URL von s3 (signierte Version 2)
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
[Java] Ermittelt die Länge der Ersatzpaarzeichenfolge
Spüren Sie den Lauf der Zeit auch in Java
[Java] So erhalten Sie die endgültige umgeleitete URL
Importieren Sie Dateien derselben Hierarchie in Java
[Rails] Ruft den Pfadnamen der URL vor dem Übergang ab und ändert das Linkziel
In Spring-Security ist die Weiterleitungs-URL meines Anmeldebildschirms falsch und die Anmeldung schlägt fehl.
Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Rufen Sie den Namen des Testfalls in der JUnit-Testklasse ab
[Java] So erhalten Sie den Maximalwert von HashMap
Ändern Sie die Speicherqualität von JPEG-Bildern in Java
Fassen Sie die zusätzlichen Elemente der optionalen Klasse in Java 9 zusammen
Ersetzen Sie nur einen Teil des URL-Hosts durch Java
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Holen Sie sich EXIF-Informationen in Java
[Java] KClass in Java herunterladen [Kotlin]
Java-Implementierung von Tri-Tree
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
Wurde im Basisjahr der Java-Kalenderwoche durchgeführt
Eine kurze Erklärung der fünf Arten von Java Static
Erhältlich am nächsten Werktag nach dem angegebenen Datum bei JAVA
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
Zählen Sie die Anzahl der Stellen nach dem Dezimalpunkt in Java
Korrigieren Sie den Zeichencode in Java und lesen Sie von der URL
So leiten Sie den letzten Tag des Monats in Java ab
Beispielcode zum Abrufen der Werte der wichtigsten SQL-Typen in Java + Oracle Database 12c
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
[Java] Löschen Sie die Elemente von List
[Java] Abrufen von Datumsinformationen 10 Tage später in Millisekunden in der Datumsklasse
Errate den Zeichencode in Java
Untersuchen Sie die Systeminformationen der AWS Lambda-Betriebsumgebung in Java
[Java1.8 +] Mit LocalDate das Datum des nächsten × Tages abrufen
[Java Edition] Geschichte der Serialisierung
Rufen Sie in Spring Boot eine Proxy-Instanz der Komponente selbst ab
Geben Sie den Java-Speicherort in eclipse.ini an
Geben Sie die Differenz zwischen jedem Feld zweier Objekte in Java aus
Untersuchen Sie die Liste der in AWS Lambda + Java verfügbaren Schriftarten