我有一個URL重定向到另一個,重定向到另一個,我試圖獲得最終域。我認爲會重定向連接時發生,但運行此代碼告訴我,否則:何時發生URL重定向?
public static void main(String[] args)
{
System.out.println(resolveEndDomain("http://goo.gl/ELHEjl"));
}
private static String resolveEndDomain(String deepLink)
{
HttpURLConnection httpConnection = null;
try
{
httpConnection = (HttpURLConnection) new URL(deepLink).openConnection();
//httpConnection.getResponseCode();
}
catch (Exception e)
{
e.printStackTrace();
}
return httpConnection.getURL().getHost();
}
所以,如果我運行它,它只是給我goo.gl
。但是,如果我取消註釋行以獲取響應代碼,它會從最終域中提取它並打印www.thomann.de
。如果我使用getHeaderFields()
,getContent()
或類似,但connect()
似乎沒有幫助,則會發生同樣的情況。我對這些回覆中的任何一個都不感興趣,所以我該如何解決重定向問題?連接何時有效發生?
重定向通常是服務器通知客戶端在別處查看的響應。所以重定向通常在服務器端發送,但客戶端必須遵循它。如果你檢查http狀態碼,你應該得到一個301或302,這表明響應包含你被重定向到的位置。 – Thomas 2014-11-04 12:54:08
「www.thoman.de」有什麼問題。我會說這是你正在尋找的價值,不是嗎? – SJuan76 2014-11-04 13:00:56
@Thomas不,如果首先調用'HttpURLConnection.setFollowRedirects(false)',代碼只有301。但沒有指定false,它應該自動跟隨鏈接,事實上,當我調用'getResponseCode()'時,它會給我一個200. – 2014-11-04 14:32:01