【问题标题】:Why is RestSharp posting form name/value pairs instead of JSON?为什么 RestSharp 发布表单名称/值对而不是 JSON?
【发布时间】:2019-05-11 02:50:30
【问题描述】:

当我有这行时,为什么 RestSharp 发布表单名称/值对而不是 JSON:`request.RequestFormat = DataFormat.Json;

var request = new RestRequest($"api/Users/{userId}/UpdateProperty", Method.PUT);
request.RequestFormat = DataFormat.Json;
request.AddObject(new { key = key, value = value });
Execute(request);

这会产生以下 http 请求(使用 Fiddler 检查):

PUT /api/Users/c8c946f9-e1dd-49c6-9c7f-23572017058a/UpdateProperty HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
Accept-Encoding: gzip, deflate

key=Gender&value=Female

我期待正文是 JSON:

{ key: "Gender", value: "Female" }

我做错了什么?

【问题讨论】:

    标签: rest restsharp


    【解决方案1】:

    您想使用 AddJsonBody 方法而不是 AddObject 方法。您可能还想添加带有“application/json”值的“Content-type”标头。

    基本上是这样的:

    var request = new RestRequest($"api/Users/{userId}/UpdateProperty", Method.PUT);
    request.AddHeader("Content-type", "application/json");
    request.RequestFormat = DataFormat.Json;
    request.AddJsonBody(new { key = key, value = value });
    Execute(request);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多