HttpClient 授权头未通过

问题描述 投票:0回答:1

我查看了多篇有关此问题的帖子,但我看到的解决方案似乎都不适合我的情况。

var request = new HttpRequestMessage(HttpMethod.Post, _Endpoint);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("APIToken", _apiKey);
//request.Headers.Add("Authorization APIToken", _apiKey);
request.Content = new StringContent(JsonSerializer.Serialize(contacts))
{
    Headers =
    {
        ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json")
    }
};

using (var response = await _client.SendAsync(request))
{
    var readstring = response.Content.ReadAsStringAsync().Result;
    ...
}

request.Headers.Add 被注释掉了,因为我最初尝试这样做。

我在创建_client时还设置了DefaultRequestHeader

_client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("APIToken", _apiKey);

它在 Postman 中运行,标头参数设置为: 授权:APIToken [APIKey]

当我在调用 SendAsync 之前设置断点时,我可以看到为 Authorization 标题加载了正确的值。

但是我从服务器收到错误消息,显示“未提供身份验证凭据”。如果我在 Postman 中输入错误的 APIKey,则会返回一条不同的消息,告诉我它没有发送错误的凭据,它根本没有发送授权标头。

c# api rest httpclient
1个回答
0
投票

您是否在内容中设置其他标题?也许错误是这样来的

© www.soinside.com 2019 - 2024. All rights reserved.