从RestSharp响应头获取值

use*_*862 8 response http-headers 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);
Run Code Online (Sandbox Code Playgroud)

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

string userId = response.Headers["userId"]
Run Code Online (Sandbox Code Playgroud)

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

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

Gui*_*OND 12

正如我不知道自己该怎么做一样,我发现这个的帮助下面解决MSDN文章有关IList<T>:

string userId = response.Headers.ToList()
    .Find(x => x.Name == "userId")
    .Value.ToString();
Run Code Online (Sandbox Code Playgroud)

我需要承认我喜欢在Visual Studio中使用立即窗口快速监视来进行挖掘,并且知道我正在处理的类型是什么类型的元素:

response.Headers[0]
Run Code Online (Sandbox Code Playgroud)

{用户id = 1024}

名称:"userId"

输入:HttpHeader

价值:"1024"

  • 如果标题不存在怎么办?这会导致空引用异常。 (2认同)

kad*_*adj 6

使用 LINQ:

string userId = response.Headers
    .Where(x => x.Name == "userId")
    .Select(x => x.Value)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

这不需要知道元素的索引,并且处理头部不存在的场景。


小智 -1

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

string userId = response.Headers.ElementAt(indexOfUserId).Value.ToString();
Run Code Online (Sandbox Code Playgroud)