【发布时间】:2019-07-08 18:42:22
【问题描述】:
我正在尝试从此 api codaBox 获取数据 我已经用swagger 测试过了 但是当我尝试使用 c# 时,我收到错误代码 401。我使用了正确的标题、用户名和密码。
我使用swagger 使用相同的凭据对其进行了测试,并且我已经获得了数据。
try
{
var byteArray = Encoding.ASCII.GetBytes("Username:password");
Client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
Client.BaseAddress = new Uri("https://myurl");
Client.DefaultRequestHeaders.Add("X-Software-Company", "myToken");
HttpResponseMessage response = await Client.GetAsync("");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
// Above three lines can be replaced with new helper method below
// string responseBody = await client.GetStringAsync(uri);
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
}
我想获得 200 个状态码。
【问题讨论】:
-
你试过设置用户代理吗?如果您不这样做,这通常会导致一些问题
-
还可以使用诸如 wireshark/fiddler 之类的工具检查浏览器中的成功登录尝试,这可能会帮助您使您的自动化代码正常工作。
-
在调用
EnsureSuccessStatusCode之前,您至少应该阅读某些状态代码的响应正文。大多数 OAuth 提供程序在响应正文中提供错误消息。 -
你比较过你的载体了吗?
-
您是否尝试在 Postman 中测试 API 调用?如果你让它在那里工作,邮递员可以为你打电话。
标签: c# c# httpclient