来自 C# 控制器的 Angular http post formData 不受支持的媒体类型
Posted
技术标签:
【中文标题】来自 C# 控制器的 Angular http post formData 不受支持的媒体类型【英文标题】:Angular http post formData unsupported media type from C# Controller 【发布时间】:2020-04-06 07:05:35 【问题描述】:我尝试执行的(Angular)代码如下所示:
this.http.post(url, formData, httpOptions).subscribe(
(data) =>
console.log(data);
,
(error) =>
console.log(error);
);
formData 很简单:
const formData = new FormData();
formData.append('listNetworkConstituents', JSON.stringify(params));
尝试了很多选项,包括:
const httpOptions =
headers: new HttpHeaders(
'Content-Type': 'application/x-www-form-urlencoded'
)
我已经验证了参数数据,Json 没有遇到任何问题。 Fiddler 确认请求到达服务器然后被拒绝: “服务器响应状态为 415(不支持的媒体类型)”
我知道 FormData 的使用在其他地方对这个服务器起作用。
有什么想法吗?提前致谢。修行者
【问题讨论】:
【参考方案1】:HTTP 415 Unsupported Media Type 客户端错误响应代码表示服务器拒绝接受请求,因为负载格式是不受支持的格式。
格式问题可能是由于请求指定的 Content-Type 或 Content-Encoding,或者是直接检查数据的结果。
以上摘录来自:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415
请比较您标头中的内容类型和内容编码,并确保正在侦听此调用的 URL 期望您发送的类型。
你可以做的事情
转到目标 API/URL 并查看其设置,看看它接受什么格式。 使用 Postman 或其他实用程序进行相同的调用,看看它是否通过 对比你发送的json body,看看有没有问题【讨论】:
Jawad:这看起来是个好建议。服务器当前正在 Visual Studio 中运行 - 调试。您是否知道我可能会看到内容编码和类型的设置?再次感谢。 在这里尝试了代码,它返回了很好的信息。 ***.com/a/11945256/1390548 哇...所以代码可能没问题。那么我需要专注于服务器。以上是关于来自 C# 控制器的 Angular http post formData 不受支持的媒体类型的主要内容,如果未能解决你的问题,请参考以下文章
angular 1 promise call http 有效,但不适用于来自 json 结构的假数据,promise.then 不是函数
在 node.js/angular 应用程序中查询来自不同主机的数据时,如何遵守访问控制起源异常? [复制]
如何使 Angular POST 到 C# Asp.Net MVC 控制器?
Angular 6 + Spring Boot:错误:“来自原点 'http://localhost:4200' 已被 CORS 策略阻止”