RestSharp AddBody在JSON参数中添加双引号

c# json web-services restsharp

7 观看

2回复

71 作者的声誉

我用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但没有任何作用。

作者: Ketan Kotak 的来源 发布者: 2019 年 2 月 15 日

回应 2


0

5957 作者的声誉

我建议你用来JObject创建你的身体,如,

JObject jObject = new JObject();
jObject["action"] = "SAVE";
jObject["data"] = "savedata";
jObject["token"] = "systemtoken";
jObject["jsonaction"] = JObject.Parse("{\"tokenid\":\"x123x45\",\"userid\":\"2456\",\"ip\":\"192.168.1.20\",\"transaction\":\"6\",\"actionCode\":\"78\",\"jtoken\":\"systemtoken\"}");

然后将其传递jObject给任何一个

request.AddBody(jObject);

要么

request.AddJsonBody(jObject);

并且JObject您需要将using Newtonsoft.Json.Linq;命名空间导入到您的程序中,并且您可以在newtonsoft.json包中找到此命名空间。

你甚至可以这样使用

request.AddBody(new { action = "SAVE", data = "savedata", token = "systemtoken", jsonaction = JObject.Parse(jsonaction) });

但是,为完整的json数据创建一个JObject最好能够在使用字符串创建自己的json数据时最大限度地减少错误和异常

输出:

在此输入图像描述

作者: er-sho 发布者: 2019 年 2 月 15 日

0

182 作者的声誉

您可以使用以下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 :

{
  "userId":"sam@company.com" ,
  "password":"welcome" ,
  "jsonAction": {
    "tokenId": "",
    ...
}

希望能帮助到你!

作者: kowsikbabu 发布者: 2019 年 2 月 15 日
32x32