我有一个 WebApi 端点,我可以用 curl ok 调用:
curl -X POST "https://endpoint/SendPin?email=john@smith.com" -H "accept: application/json"
WebAPI 如下所示:
[HttpPost]
[Route("SendPin")]
public async Task<bool> SendPin([Required] [EmailAddress] string email)
{
....
}
问题:当我使用 RestSharp 调用服务器时,服务器返回 BadRequest 消息"电子邮件是必需的???
var request = new RestRequest("SendCode");
request.AddJsonBody(new { Email = "john@smith.com"});
RestClient client = new RestClient(TheUrl);
var response = await client .ExecutePostTaskAsync<bool>(request );
看来 RestSharp 没有作为参数发送到 url??
您正在使用request.AddJsonBody()
方法将电子邮件添加到请求正文。 相反,将其作为查询字符串添加到请求 url 中,就像您在 curl 请求中所做的那样
var request = new RestRequest("SendPin"+ "?email=john@smith.com");
RestClient client = new RestClient(TheUrl);
var response = await client.ExecutePostTaskAsync<bool>(request);
因为参数是一个简单的类型,我需要像他的一样调用它:
request.AddParameter("email", credential.Email, ParameterType.QueryString);