2011-06-21 50 views

回答

21

有幾種方法可以獲取特定的標題。從​​HttpResponse繼承,它提供了以下標題檢索方法:

在你的情況,你可能想getFirstHeader(String)。標題可以包含多個值,因此Header[]數組從getHeaders()返回;如果您只希望有一個標題,getFirstHeader(String)就足夠了。

+1

這些函數都返回'Header'而不是'String' –

+1

看起來像這個答案寫完以後API已經改變了。 http://developer.android.com/reference/org/apache/http/Header.html有一個'GetValue()'。 –

+0

@RobHruska的確。使用'httpURLConnection.getHeaderField(「Location」)'now – shkschneider

2

您是否試過HttpResponse.getHeaders()方法?

+0

我想知道如果有一種方式來獲得一個特定的頭沒有遍歷他們全部。 –

+0

據我看到這個方法接受頭名稱。 – Michael

0

請嘗試HttpResponse.getAllHeaders()打印標題和在標題中打印cookie。

response.getHeaders("Set-Cookie") 
+0

獲取重定向URL的下一步是什麼? –

0

嘗試以下方法: -

URL obj = new URL("http://mkyong.com"); 
    URLConnection conn = obj.openConnection(); 
    Map<String, List<String>> map = conn.getHeaderFields(); 

    System.out.println("Printing Response Header...\n"); 

    for (Map.Entry<String, List<String>> entry : map.entrySet()) { 
     System.out.println("Key : " + entry.getKey() 
          + " ,Value : " + entry.getValue()); 
    } 

    System.out.println("\nGet Response Header By Key ...\n"); 
    String server = conn.getHeaderField("Server"); 

    if (server == null) { 
     System.out.println("Key 'Server' is not found!"); 
    } else { 
     System.out.println("Server - " + server); 
    } 

    System.out.println("\n Done"); 

    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

http://www.mkyong.com/java/how-to-get-http-response-header-in-java/

5

我一直使用此代碼

起初,我這樣做

Header[] headers = response.getAllHeaders(); 

接下來,我m usi NG一種簡單的方法在HashMap中轉換

private HashMap<String, String> convertHeadersToHashMap(Header[] headers) { 
    HashMap<String, String> result = new HashMap<String, String>(headers.length); 
    for (Header header : headers) { 
     result.put(header.getName(), header.getValue()); 
    } 
    return result; 
} 

現在我可以得到任何價值

也許有人可以幫助 好運