我正在尝试使用GetAsync
从API获取一些信息,但即使添加了带有为我提供的令牌的OAuth授权标头,我也会获得403的状态代码。还有其他我需要做的事情,还是我的令牌不好?
class TestAPI
{
static void Main()
{
var client = new HttpClient();
client.BaseAddress = new Uri(BASE_ADDRESS_FOR_TESTING);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth", TOKEN);
HttpResponseMessage response = await client.GetAsync("WebApi/CaseLogs/v10/Search?DateFrom=04-05-2012");
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsStringAsync();
}
else
{
Console.WriteLine((int) response.StatusCode); // prints "403"
}
}
}
答案 0 :(得分:1)
你的HttpClient看起来很好。我认为你的令牌很糟糕。
403错误也支持这一理论。
403 FORBIDDEN服务器理解了 请求但拒绝授权。
希望公开请求被禁止的服务器 可以在响应有效负载中描述该原因(如果有的话)。 https://httpstatuses.com/403
您还应该打印您的回复信息。
using ( HttpResponseMessage response = await client.GetAsync("WebApi/CaseLogs/v10/Search?DateFrom=04-05-2012"))
using (HttpContent content = response.Content)
{
string result = await content.ReadAsStringAsync();
Console.WriteLine(result);
}
尝试使用此代码查看您是否在响应内容中获得了更多信息。
希望这会有所帮助。