【问题标题】:HTTP status code 403 received when trying to retrieve response from GetAsync尝试从 GetAsync 检索响应时收到 HTTP 状态代码 403
【发布时间】:2017-11-01 17:09:59
【问题描述】:

我正在尝试使用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"
        }
    }
}

【问题讨论】:

    标签: c# rest api oauth


    【解决方案1】:

    您的 HttpClient 对我来说看起来不错。我觉得你的 Token 不好。

    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);
            }
    

    试试这个代码,看看你是否在响应内容中获得了更多信息。

    希望这会有所帮助。

    【讨论】:

    • 我是这么想的,我只是想验证一下。
    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 2016-02-08
    • 2018-04-05
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2018-09-22
    • 2018-09-30
    相关资源
    最近更新 更多