从RestSharp响应头获取值

时间:2014-04-28 10:22:00

标签: http-headers response restsharp

我希望有人能帮助我解决RestSharp的问题。一切正常;我正在使用以下代码收到我的回复:

var client = new RestClient("http://mybaseuri.com");
var request = new RestRequest("service/{id}", Method.GET);
request.AddUrlSegment("id", id);

// execute the request
IRestResponse response = client.Execute(request);

我想从响应标题中获取一个值:

string userId = response.Headers["userId"]

我在网上找不到任何例子,任何人都可以帮助从response.Headers对象获取IList类型的值吗?

我不打算迭代整个集合,只是按名称提取单个值。

4 个答案:

答案 0 :(得分:12)

当我想知道自己如何做同样的事情时,我在MSDN article关于IList<T>的帮助下找到了以下解决方案:

string userId = response.Headers.ToList()
    .Find(x => x.Name == "userId")
    .Value.ToString();

我需要承认我喜欢在Visual Studio中使用 立即窗口 快速观察 进行游戏挖掘一下,知道我正在处理的是什么类型的元素:

response.Headers[0]
  

{用户id = 1024}

     

名称:“userId”

     

输入:HttpHeader

     

值:“1024”

答案 1 :(得分:2)

Linq并不难:

if( response.Headers.Any(t=>t.Headers == "Location"))
{
    string location = 
    response.Headers.FirstOrDefault(t=>t.Headers == "Location").Value.ToString();
}

答案 2 :(得分:0)

如果您知道“userId”的索引,那么您可以执行以下操作:

string userId = response.Headers.ElementAt(indexOfUserId).Value.ToString();

答案 3 :(得分:0)

使用LINQ:

string userId = response.Headers
    .Where(x => x.Name == "userId")
    .Select(x => x.Value)
    .FirstOrDefault();

这不需要知道元素的索引,并且可以处理标题不存在的情况。