我想在这个话题中开始一点点上下文.我正在做一些测试,以建立一个从本地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(); }