HttpClient 授权 Header 格式无效

HttpClient Authorization Header Invalid Format

当我尝试使用下面的地址和授权值发出 GET 请求时,我没有遇到任何问题。

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

Header 密钥:授权

值:示例;foo

当我使用 HttpCLient 尝试时,我收到授权 header 值

的格式无效错误

这是我试过的方法

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

我做错了什么?

通常,授权 header 的格式为 {scheme} {token},这是它试图用您当前的代码验证的格式。

一些服务器可以配置为接受不同的格式。为避免客户端验证标准格式,请使用 TryAddWithoutValidation

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

根据您的示例,它会有以下请求 headers

Accept application/json
Authorization example;foo