Enregistrez le contenu suivant sous le nom de fichier 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 {
//Obtenir des arguments de ligne de commande
String srcUrl = args[0];
//Obtenir l'URL de destination de la redirection
Optional<String> redirectUrl = getRedirectUrl(srcUrl);
//URL de destination de la redirection de sortie
redirectUrl.ifPresent(url -> System.out.println(url));
}
//Obtenez l'URL de destination de la redirection
public static Optional<String> getRedirectUrl(String srcUrl) throws URISyntaxException, IOException, InterruptedException {
//Créer des informations de requête HTTP
HttpRequest req = HttpRequest.newBuilder(new URI(srcUrl)).GET().build();
//Requête HTTP
//Notez que HttpClient ne lève pas d'exception pour 4xx et 5xx
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.followRedirects(HttpClient.Redirect.NEVER) //Paramètre de ne pas rediriger automatiquement
.build();
HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
//Obtenir l'en-tête Location à partir de la réponse HTTP
return res.headers().firstValue("location");
}
}
Exemple d'exécution par 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
Enregistrez le contenu suivant sous le nom de fichier 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 {
//Obtenir des arguments de ligne de commande
String srcUrl = args[0];
//Obtenir l'URL de destination de la redirection
String redirectUrl = getRedirectUrl(srcUrl);
//URL de destination de la redirection de sortie
if (redirectUrl != null) {
System.out.println(redirectUrl);
}
}
//Obtenez l'URL de destination de la redirection
public static String getRedirectUrl(String srcUrl) throws IOException {
//Notez que 4xx et 5xx ne lèvent pas d'exception
HttpURLConnection con = (HttpURLConnection) new URL(srcUrl).openConnection();
con.setRequestMethod("GET");
con.setInstanceFollowRedirects(false); //Paramètre de ne pas rediriger automatiquement
con.connect();
//Obtenir l'en-tête Location à partir de la réponse HTTP
String location = con.getHeaderField("location");
con.disconnect();
return location;
}
}
Exemple d'exécution par Java 8 (AdoprOpenJDK 1.8.0_265) + macOS Catalina.
compiler.
$ javac GetRedirect.java
Courir.
$ 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