【发布时间】:2013-02-03 19:00:57
【问题描述】:
我有一个重定向到另一个 url 的 url。我希望能够获得最终重定向的 URL。我的代码:
public class testURLConnection
{
public static void main(String[] args) throws MalformedURLException, IOException {
HttpURLConnection con =(HttpURLConnection) new URL( "http://tinyurl.com/KindleWireless" ).openConnection();
System.out.println( "orignal url: " + con.getURL() );
con.connect();
System.out.println( "connected url: " + con.getURL() );
InputStream is = con.getInputStream();
System.out.println( "redirected url: " + con.getURL() );
is.close();
} }
我怎样才能得到这个最终重定向的 URL。
这是我尝试循环直到我们得到重定向。仍然没有获取所需的网址:
public static String fetchRedirectURL(String url) throws IOException
{
HttpURLConnection con =(HttpURLConnection) new URL( url ).openConnection();
//System.out.println( "orignal url: " + con.getURL() );
con.setInstanceFollowRedirects(false);
con.connect();
InputStream is = con.getInputStream();
if(con.getResponseCode()==301)
return con.getHeaderField("Location");
else return null;
}
public static void main(String[] args) throws MalformedURLException, IOException {
String url="http://tinyurl.com/KindleWireless";
String fetchedUrl=fetchRedirectURL(url);
System.out.println("FetchedURL is:"+fetchedUrl);
while(fetchedUrl!=null)
{ url=fetchedUrl;
System.out.println("The url is:"+url);
fetchedUrl=fetchRedirectURL(url);
}
System.out.println(url);
}
【问题讨论】:
-
@SJuan76 Suprise Surprise - 我在我的机器上没有得到相同的行为 - MACOSX .. 我得到了重定向的值...... .. 原始网址:tinyurl.com/KindleWireless 连接网址:tinyurl.com/KindleWireless 重定向网址:amazon.com/Kindle-Keyboard-Free-Wi-Fi-Display/dp/B004HZYA6E
-
但是我们得到的重定向 url 不是最终的 url。最终的 url 是我粘贴的。如果你将 tinyUrl 粘贴到浏览器中,那么你得到的最终 url 是:amazon.com/Kindle-Wireless-Reading-Display-Globally/dp/…
-
@Jeets 有你的问题的答案。因为我面临同样的问题..
标签: java