2010-09-24 54 views
12

有人可以好好建議我在這裏做錯了什麼嗎?
我試圖讓頭位置使用Java 這兒的某網址是我的代碼:無法使用Java的URLConnection獲得響應頭位置

URLConnection conn = url.openConnection(); 
String location = conn.getHeaderField("Location"); 

這是奇怪的,因爲我知道肯定,我指的返回Location頭,並使用URL喜歡的getContentType()或getContentLength()方法,完美的作品

你的建議非常感謝一如既往:)

感謝

+0

+1的提問。 – 2010-09-24 11:07:08

回答

14

也許Location標題作爲重定向響應的一部分返回。如果是這樣,URLConnection手柄通過發出第二個請求到指定的資源自動重定向,所以你需要禁用它:

((HttpURLConnection) conn).setInstanceFollowRedirects(false); 

編輯: 如果你確實需要重定向目標的URL和不要禁用重定向處理,您可以調用getURL()(連接建立後)。

+1

就像一個魅力:) – 2010-09-24 10:58:16

+0

太棒了!對我的小知識基礎是有價值的補充。 +1 – 2010-09-24 11:06:18

+0

重新編輯:這更加優雅!謝謝 – 2010-09-25 14:45:24

0

只是跟進axtavt's答案......如果網址有多個重定向,你可以做這樣的事情,以獲得直接鏈接:

String location = "http://www.example.com/download.php?getFile=1"; 
HttpURLConnection connection = null; 
for (;;) { 
    URL url = new URL(location); 
    connection = (HttpURLConnection) url.openConnection(); 
    connection.setInstanceFollowRedirects(false); 
    String redirectLocation = connection.getHeaderField("Location"); 
    if (redirectLocation == null) break; 
    location = redirectLocation; 
}