授权 Header 未通过 HttpClient 请求发送

Authorization Header not sent through an HttpClient request

上下文

我想在 Xamarin 应用程序中使用 HtppClient 通过基本身份验证进行简单的 API 调用。

问题

我做了一段时间没有问题,但是几天后,它似乎不再起作用了。不管我是否检查以前的提交。这个请求确实适用于 Postman ofc,所以我确定它来自我的代码,而不是 API.

我尝试同时针对 .Net Standard 2.0 或 2.1,但无论我做什么,API 告诉我我缺少授权 header。我什至尝试在请求之前显示 myClient.DefaultRequestHeaders.Authorization(授权存在且正确)并在请求之后显示 reponse.RequestMessage.Headers(缺少授权,存在其他 header)。

代码示例

这是我对客户端的初始化:

HttpClient _clientNewApi = new HttpClient();
string authDataNewApi = string.Format("{0}:{1}", username, password);
string authHeaderValueNewApi = Convert.ToBase64String(Encoding.UTF8.GetBytes(authDataNewApi));
_clientNewApi.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValueNewApi);
_clientNewApi.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

这里是发出请求的代码:

Uri uri = new Uri(recieved_uri);
// _clientNewApi.DefaultRequestHeaders.Authorization is well set
HttpResponseMessage json_response = await _clientNewApi.GetAsync(uri);
// json_response.RequestMessage.Headers does not contain Authorization Header
// json_response.StatusCode is Unauthorized, and the message sent back by the API is "No authentication credentials provided."

我一直在拼命地查看我的代码并进行了数小时的结帐,但都无济于事,任何线索都非常感谢 :)

回复有点晚,但我的问题来自发送重定向代码 (3XX) 的 API。

邮递员什么也没说就进行了重定向,这就是我从未见过它的原因。

该代码也由 HttpClient 自动处理,但授权 Headers 未传输到重定向请求(我猜是出于安全原因)。我必须禁用自动重定向才能自己处理并将 Headers 传递给第二个请求。