问题
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