2014-07-23 13 views
7

Ich versuche, die tatsächliche (umgeleitete) URL von der von einem URL-Verkürzung zur Verfügung gestellt zu holen.Jsoup wird umgeleitet URL

Nehmen wir zum Beispiel twitter url shortener. Ich bin in der Lage zu bekommen, dass das Antwortobjekt es auch analysiert, um das Dokument zu erhalten.

Response response = Jsoup.connect("http://t.co/i5dE1K4vSs") 
       .followRedirects(true) //to follow redirects 
       .execute(); 

Jetzt, unter Berücksichtigung einer einzigen Weiterleitung, wo die endgültige URL aus? Jede Methode oder Strategie, um dies zu erreichen?

+0

Ich denke, die 'Connection.Base' Klasse hat eine' url() 'Methode – Anton

+0

Sie möchten die endgültige URL oder alle Weiterleitungen erhalten? –

+0

Letzte Url. Alle Zwischen-URLs werden auch nicht weh tun. – Sorter

Antwort

13

Das Response-Objekt verfügt über eine url() -Methode, die Ihnen die endgültige URL geben soll. So könnten Sie tun, wie

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

Wenn Sie o erhalten die Zwischen leitet Sie sollten Umleitung ausschalten folgen und dann prüfen Header „location“. ZB

Wenn es mehrere Umleitung hat, müssen Sie die URLs rekursiv aufrufen.

1

Code:

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

Ausgang:

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

Erläuterung:

Als Connection.Response hat Connection.Base als Superschnitt, können Sie einfach die #url() -Methode davon (und Verwenden Sie dann das Objekt URL, wie Sie möchten