2 回答
TA贡献1921条经验 获得超9个赞
我收到 System.Net.WebException:“远程服务器返回错误:(415) 不支持的媒体类型。”
当您使用 时[FromBody]
,将使用Content-Type
标头来确定如何解析请求正文。未指定时Content-Type
,模型绑定进程不知道如何使用主体,因此返回 415。
我收到System.Net.WebException:“远程服务器返回错误:(400) 错误请求。”
通过将Content-Type
标头设置为application/json
,您指示模型绑定过程将数据视为 JSON,但ABC
它本身不是有效的 JSON。如果您只想发送一个 JSON 编码的字符串,您也可以将值用引号引起来,如下所示:
client.UploadString("https://localhost:44345/api/Test", "\"ABC\"");
"ABC"
是一个有效的 JSON 字符串,将被您的 ASP.NET Core API 接受。
TA贡献1803条经验 获得超6个赞
简单的解决方案:
Content-type调用 API 时在标头中指定,
WebClient client = new WebClient();
client.Headers.Add("Content-Type", "text/json");
client.UploadString("https://localhost:44345/api/Test", "\"ABC\"");
编辑:
不要使用[From_Body]属性,因为它具有糟糕的错误处理能力,请参见此处。
如果请求正文有任何无效输入(语法错误、不受支持的输入),那么它将抛出错误请求和不受支持的内容400。415出于同样的原因,如果它不理解格式,它可能会将 null 作为来自请求正文的输入。
因此,删除该属性并尝试以纯格式上传字符串,因为它只接受 String 并且您在发出请求时不需要指定 Content-Type 属性。
[HttpPost]
public void Post(string value)
{
}
并像您在原始帖子中的称呼一样称呼它。
WebClient client = new WebClient();
client.UploadString("https://localhost:44345/api/Test", "ABC");
- 2 回答
- 0 关注
- 225 浏览
添加回答
举报