【问题标题】:Send JSON data to REST API with sub payloads使用子负载将 JSON 数据发送到 REST API
【发布时间】:2018-08-06 09:31:08
【问题描述】:

我正在尝试使用我的 C# 应用程序将 JSON 数据发送到 REST API

JSON 数据应该是这样的:

{
    'agent': {
        'name': 'AgentHere',
        'version': 1
    },
    'username': 'Auth',
    'password': 'Auth'
}

所以,如您所见...agent 有子有效载荷是 nameversion

我正在像这样使用 RestSharp 调用 REST API:

var client = new RestClient("https://example.com");
            // client.Authenticator = new HttpBasicAuthenticator(username, password);

    var request = new RestRequest(Method.POST);
    request.AddParameter(
        "{'agent': { 'name': 'AgentHere', 'version': 1 }, 'username': 'Auth', 'password': 'Auth' }"
    );

    // easily add HTTP Headers
    request.AddHeader("Content-Type", "application/json");

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

但我在此行收到错误 The best overloaded method match for 'RestSharp.RestRequest.AddParameter(RestSharp.Parameter)' has some invalid argumentsArgument 1: cannot convert from 'string' to 'RestSharp.Parameter'

request.AddParameter(
            "{'agent': { 'name': 'AgentHere', 'version': 1 }, 'username': 'Auth', 'password': 'Auth' }"
        );

我无法制作子负载

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: c# json restsharp


    【解决方案1】:

    数据似乎是针对请求正文的。使用适当的AddParameter 重载。

    var request = new RestRequest(Method.POST);
    
    var contentType = "application/json";
    var bodyData = "{\"agent\": { \"name\": \"AgentHere\", \"version\": 1 }, \"username\": \"Auth\", \"password\": \"Auth\" }";
    
    request.AddParameter(contentType, bodyData, ParameterType.RequestBody);
    

    为避免手动构建可能导致错误的 JSON,请将 AddJsonBody() 与表示要序列化的数据的对象一起使用

    var request = new RestRequest(Method.POST);
    var data =  new {
        agent = new {
            name = "AgentHere",
            version = 1 
        }, 
        username = "Auth", 
        password = "Auth" 
    };
    //Serializes obj to JSON format and adds it to the request body.
    request.AddJsonBody(data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2015-05-07
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多