Jac*_*cob 4 c# asp.net-web-api dotnet-httpclient
注意:这个问题类似于这一个,但其建议的答案在这里并不适用.
我正在尝试访问此API,它正在寻找一个如下所示的标头:
Authorization: {token}
Run Code Online (Sandbox Code Playgroud)
请注意,没有任何身份验证方案.
我试过做:
myHttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("", authToken);
Run Code Online (Sandbox Code Playgroud)
这导致了一个ArgumentException,说我无法传递一个空字符串.
我也试过了两个:
myHttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(authToken);
Run Code Online (Sandbox Code Playgroud)
和
myHttpClient.DefaultRequestHeaders.Add("Authorization", authToken);
Run Code Online (Sandbox Code Playgroud)
这两个都导致FormatException.
似乎有些东西迫使我遵循我的授权标头的标准格式,但我尝试访问的服务不使用该标准格式.
小智 8
你可以尝试:
request.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token));
Run Code Online (Sandbox Code Playgroud)
如https://msdn.microsoft.com/en-us/library/hh875106(v=vs.118).aspx中所述
正如经常发生的那样,在我提出问题后我就找到了答案。
HttpClinet 让我遵循的标准格式是 Http 协议本身,它需要身份验证方案,但是有一个解决方法。
代替:
myHttpClient.DefaultRequestHeaders.Add("Authorization", authToken);
Run Code Online (Sandbox Code Playgroud)
您可以使用:
myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", authToken);
Run Code Online (Sandbox Code Playgroud)
它忽略 Http 标准,只允许您根据需要添加标头。
| 归档时间: |
|
| 查看次数: |
3467 次 |
| 最近记录: |