Я звоню в веб-API, который требует базовой аутентификации, используя следующий код:
using (var handler = new HttpClientHandler() { DefaultProxyCredentials = CredentialCache.DefaultCredentials } )
{
handler.PreAuthenticate = true;
using (var client = new HttpClient(handler))
{
var byteArray = Encoding.ASCII.GetBytes($"{UId}:{Pwd}");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var response = await client.GetAsync(url);
// if status code is 401, retry.
if (response.StatusCode == HttpStatusCode.Unauthorized)
response = await client.GetAsync(url);
}
}
API всегда возвращает 401, и я должен повторить попытку (что работает). Я попытался добавить PreAuthenticate, но это не помогло.
Требуются ли какие-либо другие изменения, чтобы это исправить?