В этой статье мы покажем вам, как использовать Jsoup, чтобы проверить, будет ли перенаправляться URL-адрес.
1. Перенаправление URL-адресов
Обычно URL-адрес перенаправления возвращает HTTP-код 301 или 307, и целевой URL-адрес будет присутствовать в заголовке ответа” местоположение “поле.
Просмотрите образец заголовка HTTP-ответа
{ Location=http://mkyong.com Server=GSE, Cache-Control=no-cache, no-store, max-age=0, must-revalidate }
2. Пример Jsoup
2.1 По умолчанию Jsoup будет рекурсивно следовать перенаправлению и отображать конечный URL-адрес.
package com.mkyong.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()); } }
Выход
200 : http://www.mkyong.com/mongodb/mongodb-remove-a-field-from-array-documents/
2.2 Чтобы проверить перенаправление URL-адреса, установите для followRedirects
значение 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"));
Выход
301 : http://goo.gl/fb/gyBkwR Is URL going to redirect : true Target : http://feeds.feedburner.com/~r/FeedForMkyong/~3/D_6Jqi4trqo/...
3. Пример Jsoup, Снова
3.1 В этом примере URL-адреса перенаправления будут распечатаны рекурсивно.
package com.mkyong.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); } } }
Выход
301 : http://goo.gl/fb/gyBkwR 301 : http://feeds.feedburner.com/~r/FeedForMkyong/~3/D_6Jqi4trqo/... 200 : http://www.mkyong.com/mongodb/mongodb-remove-a-field-from-array-documents/
Рекомендации
Оригинал: “https://mkyong.com/java/jsoup-check-redirect-url/”