首页 > 解决方案 > RestSharp AddBody 在 JSON 参数中添加双引号

问题描述

我正在使用 RESTSharp 调用 API

  var client = new RestClient("http://demoservice.com");
  var request = new RestRequest("callapi", "put");          
  request.RequestFormat = DataFormat.Json;

string jsonaction = "{\"tokenid\":\"x123x45\",\"userid\":\"2456\",\"ip\":\"192.168.1.20\",\"transaction\":\"6\",\"actionCode\":\"78\",\"jtoken\":\"systemtoken\"}";
request.AddBody(new { action = "SAVE", data = "savedata", token = "systemtoken", jsonaction = jsonaction });

我正在检查传递请求的调试数据。我的预期输出如下

{"action":"SAVE","data":"savedata","token":"systemtoken","jsonaction":{"tokenid":"x123x45","userid":"2456","ip":"192.168.1.20","transaction":"6","actionCode":"78","jtoken":"systemtoken"}}

但是得到

{"action":"SAVE","data":"savedata","token":"systemtoken","jsonaction":"{"tokenid":"x123x45","userid":"2456","ip":"192.168.1.20","transaction":"6","actionCode":"78","jtoken":"systemtoken"}"}

如果有人可以指导如何发布 JSON,我已经尝试过使用 Addbody 和 AddJsonBody 但没有任何效果。

标签: c#jsonweb-servicesrestsharp

解决方案


您可以使用以下request.AddParameter()方法执行此操作:

request.Method = Method.POST;
request.AddHeader("Accept", "application/json");
request.Parameters.Clear();
request.AddParameter("application/json", data , ParameterType.RequestBody);

var response = client.Execute(request);
var content = response.Content; // raw content as string  

其中数据的格式为:

data :

{
  "action":"dosomething" ,
  "data":"somedata" ,
  "token":"sometoken",
  "jsonAction": {
    "tokenId": "",
    ...
}

希望能帮助到你!


推荐阅读