使用这样的端点:
[HttpPost("[action]")]
public async Task<ActionResult> Import([FromBody]string request)
{
var list = JsonConvert.DeserializeObject<List<RequestQuote>>(request);
return NoContent();
}
请求似乎总是为空。今天早些时候它运行了一段时间,但不确定发生了什么变化。
这是我进行调用的客户端。
var json = JsonConvert.SerializeObject(payload);
var data = new StringContent(json, Encoding.UTF8, "application/json");
var response = client.PostAsJsonAsync($"{endpoint}/api/v1.0/BatchImport/Import", data);
有效负载是一个列表
即使在使用时
Import([FromBody] List<RequestQuote> request)
我也遇到同样的问题。
最佳答案
代码中有一个bug,数据被序列化了两次,第二次是当你使用PostAsJsonAsync时。试试这个
var json = JsonConvert.SerializeObject(payload);
var data = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync($"{endpoint}/api/v1.0/BatchImport/Import", data);
if (response.IsSuccessStatusCode)
{
var stringData = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<object>(stringData);
}
行动应该是
public async Task<ActionResult> Import([FromBody] List<RequestQuote> request)
关于c# - 接收 json 作为字符串始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70466902/