HttpRequestMessage 不允许 Authorization 标头值
Posted
技术标签:
【中文标题】HttpRequestMessage 不允许 Authorization 标头值【英文标题】:HttpRequestMessage won't allow Authorization header value 【发布时间】:2018-10-10 16:37:31 【问题描述】:我正在尝试重用我的 HttpClient
实例,这是最佳做法。因此,在一个特定请求中,我想在请求中设置 Authorization
标头,而不是在客户。从我读过的所有内容来看,这应该可行:
var request = new HttpRequestMessage(HttpMethod.Get, url);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await _client.SendAsync(request);
这会编译,但是当我尝试调用它时会抛出。我得到的例外是:
"错误的标头名称。确保请求标头与 HttpRequestMessage,带有 HttpResponseMessage 的响应标头,以及 带有 HttpContent 对象的内容标头。”
我很困惑为什么允许我在请求消息上设置这个值,如果它只是要抛出,我也没有找到解决方法。
我尝试使用TryAddWithoutValidation
直接添加标题,但我仍然得到相同的异常(甚至没有像我期望的那样返回 false!)
我怀疑这可能是框架中的一个错误,因为很多人都发布了这个确切的代码,没有明显问题,但会对任何见解/解决方法感兴趣。
【问题讨论】:
客户端是否已经设置了默认授权标头? 哪一行准确地引发了错误。发送还是当你设置标题? 好的,去挖掘源代码,看看设置该属性时会发生什么 好的。乐意效劳。我建议删除这个问题。 好的,请注意。你检查TryAddWithoutValidation
的布尔结果是否返回true?
【参考方案1】:
事实证明,由于另一个错误,“token”的值为 null。如果您遇到此问题,我建议您先检查一下:请注意,错误消息是 100% 的谎言。
【讨论】:
以上是关于HttpRequestMessage 不允许 Authorization 标头值的主要内容,如果未能解决你的问题,请参考以下文章
HttpRequestMessage.Content 带有无效和不可读的字符
如何发送带有 HttpRequestMessage 的证书?
HttpClient 标头与 HttpRequestMessage 标头