Ege Bayrak
Ege Bayrak

Reputation: 1199

HttpClient Authorization Header Invalid Format

When I try to make a GET request with the address and Authorization value below, I have no problems.

Address: http://example.com/xyz.svc/branches/?latitude=0&longitude=0&range=20000

Header Key: Authorization

Value: example;foo

When I try it with HttpCLient I get format invalid error for the authorization header value

This is how I tried

HttpClient client = new HttpClient();

    string latitude = "0";
    string longitude = "0";
    string range = "2000";

    string uri = "/xyz.svc/branches/?latitude=0&longitude=0&range=20000;

    string value = "foo";

    client.BaseAddress = new Uri("http://example.com");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Add("Authorization", String.Format("example;{0}", value));

    HttpResponseMessage response = await client.GetAsync(uri);

    var responseJson = await response.Content.ReadAsStringAsync();

    Console.WriteLine(responseJson);

What am I doing wrong?

Upvotes: 11

Views: 12594

Answers (1)

Nkosi
Nkosi

Reputation: 247088

Normally that authorization header has a format as {scheme} {token} which is what it is trying to validate with your current code.

Some servers can be configured to accept different formats. To avoid the client validating the standard format use TryAddWithoutValidation

client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("example;{0}", value));

which based on your example would have the following request headers

Accept application/json
Authorization example;foo

Upvotes: 26

Related Questions