当我尝试使用下面的地址和授权值发出GET
请求时,我没有任何问题。
地址:http://example.com/xyz.svc/branches/?latitude=0&longitude=0&range=20000
标题键:授权
值:示例; foo
当我使用HttpCLient
进行尝试时,我发现授权标头值
这是我尝试的方式
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);
我做错了什么?
答案 0 :(得分:3)
通常,授权标头的格式为{scheme} {token}
,这是尝试使用当前代码验证的格式。
某些服务器可以配置为接受不同的格式。要避免客户端验证标准格式,请使用TryAddWithoutValidation
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", String.Format("example;{0}", value));
基于您的示例的将具有以下请求标头
Accept application/json
Authorization example;foo