【问题标题】:WebApi not accepting RestSharp AddJsonBodyWebApi 不接受 RestSharp AddJsonBody
【发布时间】:2018-08-11 03:38:13
【问题描述】:

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

【问题讨论】:

    标签: asp.net-web-api restsharp


    【解决方案1】:

    您正在使用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);
    

    【讨论】:

      【解决方案2】:

      因为参数是简单类型,所以我需要像他这样称呼它:

      request.AddParameter("email", credential.Email, ParameterType.QueryString);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 2017-01-15
        相关资源
        最近更新 更多