WebApi not accepting RestSharp AddJsonBody



我有一个 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);

最新更新