使用 RestSharp,如何使用 oAuth2 Bearer 令牌对我的 ASP.NET Web API 执行 POST 请求?
Using RestSharp, how do I execute a POST request to my ASP.NET Web API with an oAuth2 Bearer token?
在我从 API 获得访问令牌后,我将调用此方法:
[Authorize]
[HttpPost]
public HttpResponseMessage BatchGeocode([FromBody] InputDataClass inputData)
{
//do stuff, return a HttpResponseMessage
}
我可以像这样使用 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()
序列化时,我得到的字符串与 [= 正文中使用的字符串相同32=] 通过 Postman 请求。
运行时我得到的消息是 "Authorization has been denied for this request." 我在本地 运行 的 API 中的断点没有被击中,这让我相信我我没有在调用应用程序中正确构建我的请求。使用 RestSharp,如何使用 oAuth2 Bearer 令牌向我的 ASP.NET Web API 执行 POST 请求?
粗略搜索看来,您可能需要使用 ParameterType
值调用重载。
request.AddParameter("Authorization", "Bearer " + accessToken, ParameterType.HttpHeader);
话虽如此,RestSharp 似乎也希望您使用不同的方法来执行身份验证 (source),但这超出了我对 RestSharp 的了解范围。
在我从 API 获得访问令牌后,我将调用此方法:
[Authorize]
[HttpPost]
public HttpResponseMessage BatchGeocode([FromBody] InputDataClass inputData)
{
//do stuff, return a HttpResponseMessage
}
我可以像这样使用 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()
序列化时,我得到的字符串与 [= 正文中使用的字符串相同32=] 通过 Postman 请求。
运行时我得到的消息是 "Authorization has been denied for this request." 我在本地 运行 的 API 中的断点没有被击中,这让我相信我我没有在调用应用程序中正确构建我的请求。使用 RestSharp,如何使用 oAuth2 Bearer 令牌向我的 ASP.NET Web API 执行 POST 请求?
粗略搜索看来,您可能需要使用 ParameterType
值调用重载。
request.AddParameter("Authorization", "Bearer " + accessToken, ParameterType.HttpHeader);
话虽如此,RestSharp 似乎也希望您使用不同的方法来执行身份验证 (source),但这超出了我对 RestSharp 的了解范围。