c#如何添加'Authorization: Basic'到我的HttpClient头

本文关键字:Basic 我的 HttpClient Authorization 添加 何添加 | 更新日期: 2023-09-27 18:14:40

我正在尝试发送GET方法到web REST api,它需要以这种形式授权:

Authorization: Basic <Base64 value of UTF-8 encoded “username:password”>

这个请求给了我:

Response status code does not indicate success: 401 (Unauthorized).

代码:

try
{
    var client = new HttpClient();
    client.BaseAddress = bUrl; // https url
    client.DefaultRequestHeaders.TryAddWithoutValidation("Content-type", "application/xml");
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + uAuth);
    HttpResponseMessage XmlResponse = await client.GetAsync(url);
    XmlResponse.EnsureSuccessStatusCode();
    string xml = await XmlResponse.Content.ReadAsStringAsync();
    Debug.WriteLine(xml);
}
catch (HttpRequestException hre) {
    Debug.WriteLine(hre.ToString());
} catch (Exception ex) {
    Debug.WriteLine(ex.ToString());
}

uAuth只是Base64 Username:Password的表示:

string uAuth =
            Convert.ToBase64String(
            Encoding.UTF8.GetBytes("username:password")
            );

我做错了什么吗?

编辑:也试过:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", uAuth);

c#如何添加'Authorization: Basic'到我的HttpClient头

DefaultRequestHeaders上应该有一个Authorization属性,你可以使用:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", uAuth);