18

I'm hoping someone can help with an issue I'm having with RestSharp. It's all working; I'm getting my reply using the following code:

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);

I'd like to get a value from the response headers along the lines of:

string userId = response.Headers["userId"]

I can't find any examples online, can anyone help get a value from the response.Headers object which is of type IList<parameter>?

I'm not looking to iterate the entire collection, just extract a single value by name.

d219
  • 2,707
  • 5
  • 31
  • 36
user3580862
  • 183
  • 1
  • 1
  • 4

4 Answers4

23

As I was wondering myself how to do the same, I find out the following solution with the help of this MSDN article about IList<T>:

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

I need to confess I'm fond of playing in Visual Studio with Immediate Window or Quick Watch to dig a bit and know what kind of element Type I'm dealing with:

response.Headers[0]

{userId=1024}

Name: "userId"

Type: HttpHeader

Value: "1024"

xorinzor
  • 6,140
  • 10
  • 40
  • 70
Guillaume Raymond
  • 1,726
  • 1
  • 20
  • 33
7

Using LINQ:

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

This requires no knowledge of the index of the element, and deals with the scenario where the header does not exist.

kadj
  • 315
  • 4
  • 9
4

It's not difficult with Linq:

if( response.Headers.Any(t=>t.Headers == "Location"))
{
    string location = 
    response.Headers.FirstOrDefault(t=>t.Name == "Location").Value.ToString();
}
MSS
  • 3,520
  • 24
  • 29
khablander
  • 159
  • 1
  • 5
-1

If you know the index of "userId" then you can do the following:

string userId = response.Headers.ElementAt(indexOfUserId).Value.ToString();
RogueHippo
  • 59
  • 1
  • 9