小编Den*_*dić的帖子

使用 WebClient 调用授权的 Web API

经过几个小时的互联网搜索,我决定向你们寻求帮助。

我已经用几个简单的 get/post 方法编写了一个 Web API。我正在使用个人用户帐户身份验证方法。

使用 HttpClient,我成功地调用了每个 AUTHORIZED get 和 post 方法以及用于生成授权令牌的 /token 端点。

问题是我必须在 .NET Framework 3.5 项目中调用这些方法。因此,我尝试使用 WebClient 来执行此操作,因为我了解到 .NET Framework 3.5 不支持 HttpClient。

GetAPIToken() 方法生成不记名令牌并且它有效。

 private static string GetAPIToken(string userName, string password, string apiBaseUri)
    {
        using (WebClient client = new WebClient())
        {
            client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            var response = client.UploadString(apiBaseUri + "/Token", "POST", "grant_type=password&username=" + userName + "&password=" + password);
            var jObject = JObject.Parse(response);
            return jObject.GetValue("access_token").ToString();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我从 Web API 中删除 [Authorize] 属性时,此 GET 方法有效,但在获得授权后无法使其工作。

    //GET ODRA?ENI …
Run Code Online (Sandbox Code Playgroud)

api webclient token unauthorized http-status-code-401

6
推荐指数
0
解决办法
4378
查看次数