在网上搜索了几个小时后,我决定请你们帮忙。
我用一些简单的get / post方法编写了一个Web API。我使用的是个人用户帐户身份验证方法。
使用HttpClient我成功调用了每个AUTHORIZED get和post方法以及用于生成授权令牌的/ token端点。
问题是我必须在.NET Framework 3.5项目中调用这些方法。所以我尝试使用WebClient来执行此操作,因为我读到.NET Framework 3.5中不支持HttpClient。
GetAPIToken()METHOD生成Bearer令牌并且它可以正常工作。
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();
}
}
当我从Web API中删除[Authorize]属性时,此GET方法有效,但我无法在授权时使其工作。
//GET ODRAĐENI POSTUPCI
private static string GetOdradjeniPostupci(int Id, string token)
{
string apiBaseUri = "http://localhost:60511/";
string serviceUrl = apiBaseUri + "api/ZOdradjeniPostupci";
using (WebClient client = new WebClient())
{
client.Headers.Clear();
client.Headers.Add("Content-Type", "application/json");
client.Headers.Add("Authorization", "Bearer " + token);
var response = client.DownloadString(serviceUrl + "/GetZOdradjeniPostupci?cZdrUst=" + Id.ToString());
return response;
}
}
无论我尝试什么,我都会得到错误401 unathorized。 (来自互联网的有关授权标题的不同组合)。 希望你能就如何解决这个问题给我任何建议。
我会非常感激。
感谢。