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
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
Recommended Posts