Java 在 Android 中从 HttpResponse 获取标头

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6424611/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-16 05:48:36  来源:igfitidea点击:

Get header from HttpResponse in Android

javaandroidhttphttp-headers

提问by Radu Stoenescu

Is there a way to get the value of a specific header using the HttpResponseobject returned by the HttpClientexecute()method in Android?

有没有办法使用Android中方法HttpResponse返回的对象获取特定标头的值HttpClientexecute()

采纳答案by Rob Hruska

There are several ways to get specific headers. HttpResponseinherits from HttpMessage, which provides the following header retrieval methods:

有几种方法可以获取特定的标头。HttpResponse继承自HttpMessage,它提供以下标头检索方法:

In your case, you probably want getFirstHeader(String). Headers can contain multiple values, hence the Header[]array return from getHeaders(); if you only expect there to be a single header, getFirstHeader(String)should suffice.

在您的情况下,您可能想要getFirstHeader(String). 标头可以包含多个值,因此Header[]数组从getHeaders(); 如果您只希望有一个标题,getFirstHeader(String)就足够了。

回答by Michael

Have you tried HttpResponse.getHeaders()method?

你试过HttpResponse.getHeaders()方法吗?

回答by user366584

Please try HttpResponse.getAllHeaders()for printing headers and for printing cookie in Headers.

请尝试HttpResponse.getAllHeaders()打印标题并在标题中打印 cookie。

response.getHeaders("Set-Cookie")

回答by duggu

try the below method :-

试试下面的方法:-

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/

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

回答by Эвансгелист Evansgelist

I always use this code

我总是使用这个代码

Initially, I do so

最初,我这样做

 Header[] headers = response.getAllHeaders();

Next, I'm using a simple method converts in hashmap

接下来,我在 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;
}

Now I can get any value

现在我可以得到任何价值

Maybe someone can help Good luck

也许有人可以帮助祝你好运