HttpClient Authorization Header Invalid Format

南笙酒味 提交于 2020-12-05 12:14:44

问题


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?


回答1:


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


来源:https://stackoverflow.com/questions/49818959/httpclient-authorization-header-invalid-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!