我希望有人能帮助我解决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类型的值吗?
我不打算迭代整个集合,只是按名称提取单个值。
答案 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();
这不需要知道元素的索引,并且可以处理标题不存在的情况。