使用HttpClient,发送没有架构

时间:2017-07-01 17:04:26

标签: c# asp.net-web-api dotnet-httpclient

注意:此问题与this one类似,但其建议的答案并不适用于此处。

我正在尝试访问this API,它正在寻找一个如下所示的标题:

Authorization: {token}

请注意,缺少任何身份验证方案。

我尝试过:

myHttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("", authToken);

导致ArgumentException表示我无法传递空字符串。

我也试过了两个:

myHttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(authToken);

myHttpClient.DefaultRequestHeaders.Add("Authorization", authToken);

两者都会导致FormatException。

似乎有些事情迫使我遵从我的授权标题的标准格式,但我尝试访问的服务并没有使用该标准格式。

2 个答案:

答案 0 :(得分:7)

你可以尝试:

request.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token));

https://msdn.microsoft.com/en-us/library/hh875106(v=vs.118).aspx

中所述

答案 1 :(得分:3)

似乎经常发生这种情况,在我提出问题之后我就找到了答案。

HttpClinet给我的标准格式是Http协议本身,它需要一个身份验证方案,但是有一个解决办法。

而不是:

myHttpClient.DefaultRequestHeaders.Add("Authorization", authToken);

您可以使用:

myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", authToken);

这会忽略Http标准,只是让你根据需要添加标题。