【问题标题】:C# RestSharp AddJsonBody() doesn't add API call Body nameC# RestSharp AddJsonBody() 不添加 API 调用正文名称
【发布时间】:2021-05-17 17:53:04
【问题描述】:

我正在使用 RestSharp,并且我认为 API 是使用 Azure 设置的。我向 API 发出 POST 请求,但注意到该请求仅在 body 被命名为 Postman 中的“agentGetRequest”时才有效。
坏身体:

{
    "supplierKey": "XXXX-XXXX-XXXX-XXXX",
    "inputDate": "2021-01-17T00:00:00.000Z"
}

好身材:

{
"agentGetRequest": {
    "supplierKey": "XXXX-XXXX-XXXX-XXXX",
    "inputDate": "2021-01-17T00:00:00.000Z"
}
}

所以当我运行我的代码时

void Post(AgentRequest agentRequest, Credentials creds )
{
    Uri baseUrl = new Uri(creds.baseURL);
    IRestClient client = new RestClient(baseUrl);

    IRestRequest request = new RestRequest(ENDPOINT, Method.POST);

    request.AddHeader("subscriptionKey", creds.subscriptionKey);
    // Option 1:
    request.AddJsonBody(agentRequest);
    // Option 2:
    request.AddJsonBody(agentRequest, "agentGetRequest")

    IRestResponse<GetAgentResponse> response = client.Execute<GetAgentResponse>(request);

    if (response.IsSuccessful)
    {
        Console.WriteLine(JsonConvert.SerializeObject(response.Content));
    }
    else
    {
        Console.WriteLine(response.ErrorMessage);
    }
}

// Body request object
public class AgentRequest 
{
    public string inputDate { get; set; }
    public string supplierKey { get; set; }
}

它会抛出一个错误的请求错误,因为它找不到正文“agentRequest”。

我找到了一种解决方法,我将字符串作为正文提供给它 - 但这会讨厌必须为每个端点都这样做:

// Instead of request.AddJsonBody()...
string body = "{\"agentGetRequest\": {\"supplierKey\": \"XXXX-XXXX-XXXX-XXXX\",\"inputDate\": \"2021-0117T00:00:00.000Z\"}}";

request.AddParameter("application/json", body, ParameterType.RequestBody);

通过 AddJsonBody 添加正文以包含名称(可能还有封装括号)时,如何正确格式化正文?

【问题讨论】:

  • 查看 RestSharp 发布 JSON 对象的 answer。您想要的“名称”也可以是 JSON 结构的一部分,这意味着它的属性。

标签: c# json.net restsharp rest


【解决方案1】:

录制到 RestSharp 的 the accepted answer 发布一个 JSON 对象,您可以像下面这样添加 JSON 正文:

request.AddJsonBody(
new 
{
  agentGetRequest = agentRequest
}); // AddJsonBody serializes the object automatically

【讨论】:

  • 你完全正确,我没有意识到这会正确格式化正文。
猜你喜欢
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2019-02-01
相关资源
最近更新 更多