Jsoup - Vérifier l'URL de redirection
Dans cet article, nous allons vous montrer comment utiliser Jsoup pour vérifier si une URL va rediriger.
1. Redirection d'URL
Normalement, une URL de redirection renverra un code HTTP de 301 ou 307, et l'URL cible figurera dans le champ d'en-tête de réponse «location».
Examiner un échantillon d'en-tête de réponse HTTP
Code HTTP: 301 déplacé définitivement
{ Location=http://example.com Server=GSE, Cache-Control=no-cache, no-store, max-age=0, must-revalidate }
2. Exemple Jsoup
2.1 By default, Jsoup will follow the redirect recursively and display the final URL.
RedirectExample.java
package com.example.crawler; import java.io.IOException; import org.jsoup.Connection.Response; import org.jsoup.Jsoup; public class RedirectExample { public static void main(String[] args) throws IOException { String url = "http://goo.gl/fb/gyBkwR"; Response response = Jsoup.connect(url).execute(); System.out.println(response.statusCode() + " : " + response.url()); } }
Sortie
200 : http://www.example.com/mongodb/mongodb-remove-a-field-from-array-documents/
2.2 To test the URL redirection, set followRedirects
to false.
Response response = Jsoup.connect(url).followRedirects(false).execute(); System.out.println(response.statusCode() + " : " + response.url()); //check if URL is redirect? System.out.println("Is URL going to redirect : " + response.hasHeader("location")); System.out.println("Target : " + response.header("location"));
Sortie
301 : http://goo.gl/fb/gyBkwR Is URL going to redirect : true Target : http://feeds.feedburner.com/~r/FeedForMkyong/~3/D_6Jqi4trqo/...
3. Exemple Jsoup, encore une fois
3.1 This example will print out the redirect URLs recursively.
RedirectExample.java
package com.example.crawler; import java.io.IOException; import org.jsoup.Connection.Response; import org.jsoup.Jsoup; public class RedirectExample { public static void main(String[] args) throws IOException { String url = "http://goo.gl/fb/gyBkwR"; RedirectExample obj = new RedirectExample(); obj.crawl(url); } private void crawl(String url) throws IOException { Response response = Jsoup.connect(url).followRedirects(false).execute(); System.out.println(response.statusCode() + " : " + url); if (response.hasHeader("location")) { String redirectUrl = response.header("location"); crawl(redirectUrl); } } }
Sortie
301 : http://goo.gl/fb/gyBkwR 301 : http://feeds.feedburner.com/~r/FeedForMkyong/~3/D_6Jqi4trqo/... 200 : http://www.example.com/mongodb/mongodb-remove-a-field-from-array-documents/