c# – 如何从HttpResponseMessage获取特定的头值

前端之家收集整理的这篇文章主要介绍了c# – 如何从HttpResponseMessage获取特定的头值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在这个话题中开始一点点上下文.我正在做一些测试,以建立一个从本地WP8应用程序到BaasBox服务器的连接.在这一点上,我已经实现了这一点.

作为登录响应,BaasBox在HttpResponseMessage对象的头部分中返回一个会话代码(X-BB-SESSION).这里是尝试从HttpResponseMessage对象获取特定头文件时遇到麻烦的地方.

我正在使用foreach语句来遍历所有标题(MSDN link).但是编译器却不能说这是不行的:

foreach语句不能对System.net.http.headers.cachecontrolheadervalue类型的变量进行操作,因为“System.net.http.headers.cachecontrolheadervalue”不包含“GetEnumerator”的公共定义

这是我尝试的代码

//Connection code to BaasBox

HttpResponseMessage response = await client.SendAsync(requestMessage,HttpCompletionOption.ResponseHeadersRead);
if (response.IsSuccessStatusCode)
{
    //get the headers
    HttpResponseHeaders responseHeadersCollection = response.Headers;
    foreach (var value in responseHeadersCollection.CacheControl)  --> HERE
    {
        string sTemp = String.Format("CacheControl {0}={1}",value.Name,value.Value);
    } else
{
    Console.WriteLine("X-BB-SESSION: NOT Found");
}

从我尝试获取值(X-BB-SESSION值)的标题contet是这样的:

访问控制允许原产地:*
访问控制 – 允许标题:X请求
X-BB-SESSION:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

有谁知道如何读标题?任何帮助将是非常欣赏

问候!

解决方法

您应该可以使用 TryGetValues方法.
HttpHeaders headers = response.Headers;
IEnumerable<string> values;
if (headers.TryGetValues("X-BB-SESSION",out values))
{
  string session = values.First();
}

猜你在找的C#相关文章