我正在尝试使用已授权的Get方法编写Web API站点。该站点是使用个人帐户的默认模板站点。因此它将用户名和密码存储在数据库中。我试图通过HttpClient调用此Web API站点并在控制台应用程序中传递用户名和密码。我已经尝试了几种方法来解决这个问题。我想*我在我的API网站上启用了CORS。我一直收到未经授权的结果。这是我正在运行的HttpClient代码,我觉得它完全有效,我认为需要配置一些东西来处理API端的用户名和密码,但我完全不确定如何进行,如果这是情况下。
using (var client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes("sampleUser:Test123!");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.BaseAddress = new Uri("http://localhost:15198/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
HttpResponseMessage response = await client.GetAsync("api/Query");
if (response.IsSuccessStatusCode)
{
thing = response.Content.ToString();
}
}
catch (HttpRequestException e)
{
var test = e.Message;
}
}
答案 0 :(得分:0)
假设您在服务器上运行Windows身份验证,则需要模拟并传递凭据。
using (new Impersonator(UserName, Domain, Pwd))
{
...http request
}
请参阅thread