C# RestSharp AddJsonBody() 不添加 API 调用 Body 名称

C# RestSharp AddJsonBody() doesn't add API call Body name

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

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

好Body:

{
"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; }
}

它抛出错误请求错误,因为它找不到 body、“agentRequest.”

我找到了一个解决方法,我将一个字符串作为 body 提供给它 - 但这不愿意为每个端点都这样做:

// 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 添加 body 以包含名称(可能还有封装括号)时,如何正确格式化它?

记录到 RestSharp 的 Post 一个 JSON 对象,您可以添加 JSON 正文,如下所示:

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