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
当我尝试使用下面的地址和授权值发出 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