2014-07-23 15 views
7

Sto provando a recuperare l'url effettivo (reindirizzato) da quello fornito da un url shortener.Jsoup get URL reindirizzato

Prendiamo ad esempio l'url twitter short. Sono in grado di ottenere l'oggetto della risposta anche analizzato per ottenere il documento.

Ora, considerando un singolo reindirizzamento, da dove ottenere l'URL finale? Qualche metodo o strategia per raggiungere questo obiettivo?

+0

Penso che la classe 'Connection.Base' abbia un metodo' url() ' – Anton

+0

Vuoi ottenere l'URL finale o tutti i reindirizzamenti? –

+0

Url finale. Anche tutti gli URL intermedi non danneggeranno. – Sorter

risposta

13

L'oggetto Response ha un metodo url() che dovrebbe fornire l'URL finale. Così si potrebbe fare come

String url = "http://t.co/i5dE1K4vSs"; 
Response response = Jsoup.connect(url).followRedirects(true).execute(); 
System.out.println(response.url()) 

Se si desidera o ottiene l'intermedio reindirizza si dovrebbe girare seguire reindirizzare off e quindi controllare per l'intestazione "location". Es.

String url = "http://t.co/i5dE1K4vSs"; 
Response response = Jsoup.connect(url).followRedirects(false).execute(); 
System.out.println(response.header("location")); 

Se ha un reindirizzamento multiplo, è necessario chiamare in modo ricorsivo gli URL.

1

Codice:

String originalUrl = Jsoup.connect("http://t.co/i5dE1K4vSs") 
         .followRedirects(true) //to follow redirects 
         .execute().url().toExternalForm(); 
System.out.println(originalUrl); 

uscita:

http://ibnlive.in.com/news/messi-considered-move-to-arsenal/487799-5-21.html 

Spiegazione:

Come il Connection.Response ha Connection.Base come superinterfaccia, si può semplicemente utilizzare il metodo #URL() di esso (e quindi utilizzare l'oggetto URL come desiderato.