使用這樣的端點:
[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)
我得到同樣的問題。
uj5u.com熱心網友回復:
如果你的控制器有這個[ApiController]屬性,你可以把你要決議的資料型別作為方法的引數。我相信正在發生的事情是您的程式試圖將 JSON 決議為字串型別,這不是您想要的。您可以嘗試下面的代碼,它應該可以實作您的需求。
[HttpPost("[action]")]
public async Task<ActionResult> Import([FromBody]List<RequestQuote> list)
{
// The parsed object should now be available here as "list"
return NoContent();
}
或者,這篇文章建議直接拉取請求的正文。任何一種解決方案都應該是有效的。
uj5u.com熱心網友回復:
代碼有一個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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391697.html
上一篇:為不可見面板觸發事件-.Net
