使用 HttpClient,发送一个没有模式的授权令牌

Using HttpClient, send an Authorization token with no schema

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

我正在尝试访问 this API,它正在寻找如下所示的 header:

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。

似乎有什么东西迫使我遵守我的授权标准格式header,但我尝试访问的服务不使用该标准格式。

你可以试试:

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

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

所述

就像经常发生的那样,在我提出问题后我就找到了答案。

HttpClinet 要求我使用的标准格式是 Http 协议本身,它需要一个身份验证方案,但是有一个 work-around。

而不是:

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

您可以使用:

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

忽略 Http 标准,只允许您根据需要添加 header。