使用RestSharp,如何使用oAuth2 Bearer令牌对ASP.NET Web API执行POST请求?

问题描述 投票:0回答:1

从我的API获取访问令牌后,我调用此方法:

[Authorize]
[HttpPost]
public HttpResponseMessage BatchGeocode([FromBody] InputDataClass inputData)
{
    //do stuff, return a HttpResponseMessage
}

我可以使用Postman发出请求并获得预期的响应,如下所示:

HTTP request using Postman

我试图在使用RestSharp的应用程序中调用相同的API方法,使用与上面相同的url和输入数据:

var client = new RestClient(url);

var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer " + accessToken);      
request.Parameters.Clear();
request.AddParameter("application/json", JsonConvert.SerializeObject(apiInput), ParameterType.RequestBody);

其中apiInput是我的对象,与API输入参数匹配 - 当使用JsonConvert.SerializeObject()序列化时,我得到的字符串与通过Postman在我的API请求正文中使用的字符串相同。

当这运行我收到的消息是“此请求已拒绝授权”。我在本地运行的API的断点没有被击中,这使我相信我没有在调用应用程序中正确构造我的请求。使用RestSharp,如何使用oAuth2 Bearer令牌对ASP.NET Web API执行POST请求?

c# asp.net asp.net-web-api restsharp
1个回答
3
投票

从粗略搜索看来,您可能需要使用ParameterType值调用重载。

request.AddParameter("Authorization", "Bearer " + accessToken, ParameterType.HttpHeader);

话虽如此,似乎RestSharp希望您使用不同的方法来执行身份验证(source),但这超出了我对RestSharp的了解范围。

© www.soinside.com 2019 - 2024. All rights reserved.