我的控制器无法通过POST
方法接受字符串。可能有什么不对?当我创建HttpClient
并发送如下内容时:
var content = new FormUrlEncodedContent(new []
{
new KeyValuePair<string, string>("signature", "someexamplecontent"),
});
var response = await _client.PostAsync(path, content);
我收到错误:415, Unsupported media type
并且它没有进入控制器。相反,当我使用PostAsJsonAsync
时 - 踩到参数signature
是空的。
var response = await _client.PostAsJsonAsync(path, content);
这是控制器中的方法:
[HttpPost("generatecert")]
public byte[] PostGenerateCertificate([FromBody] string signature)
{
}
答案 0 :(得分:3)
端点很可能是针对JSON内容配置的。如果使用PostAsJsonAsync
,则只需传递要发布的字符串。
var signature = "someexamplecontent";
var response = await _client.PostAsJsonAsync(path, signature);
该方法将序列化并为请求设置必要的内容类型标题。
如果发布更复杂的对象,例如
public class Model {
public string signature { get; set; }
public int id { get; set; }
}
同样适用,但需要更新操作以期望复杂对象
[HttpPost("generatecert")]
public byte[] PostGenerateCertificate([FromBody] Model signature) {
//...
}
并且客户端将发送对象
var model = new Model {
signature = "someexamplecontent",
id = 5
};
var response = await _client.PostAsJsonAsync(path, model);