c# - 如何将 POST 请求正文中的有效 XML 提交到使用 XML 的 ASP.NET Core Web API?
问题描述
我已经安装Microsoft.AspNetCore.Mvc.Formatters.Xml
并设置如下ConfigureServices()
:
services.AddMvc().AddXmlSerializerFormatters();
现在,我创建了一个简单的 Web API,如下所示:
[HttpPost]
[Consumes("application/json", new string[]{"application/xml"})]
public ActionResult<string> OnPost([FromBody] ZapScan scan)
{
return scan.ToString();
}
接受ZapScan
通过模型绑定:
public class ZapScan
{
public string Url { get; set; }
public bool Priority { get; set; }
public override string ToString()
{
return $"url={Url}, priority={Priority}\n";
}
}
但是,我从 Postman 发送的任何 XML 都会被拒绝,例如:
<?xml version="1.0" encoding="UTF-8"?>
<zapscan>
<url>http://www.example.cm</url>
<priority>false</priority>
</zapscan>
结果是:
{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|f16a42f4-4c8f4678c6f84eb7.","errors":{"":["An error occurred while deserializing input data."]}}
如何将 POST 请求正文中的 XML 正确格式化为使用 XML 的 ASP.NET Web API?
解决方案
您的 XML 无效。您有两个开始<zapscan>
标签,没有结束标签。
<?xml version="1.0" encoding="UTF-8"?>
<zapscan>
<url>http://www.example.cm</url>
<priority>false</priority>
<zapscan> <-- this needs to be a closing tag
此外,正如评论中已经介绍的那样,您的套管有问题。
推荐阅读
- unity3d - 如何从 TargetHit 脚本调用 Score() 函数到 UpdateUI 脚本?
- r - R:在 gamm (gamcova) 中编程嵌套随机效应
- flutter-web - 颤振网页 | 我不应该在SEO方面建立网站吗?
- codenameone - 代号一我想让工具栏在向上滚动时隐藏
- sql - 为什么我的查询没有提供单一的结果?
- docker - Dockerize dotnet core 2.2 应用程序,nopCommerce Dockerfile 中放置了什么以及为什么行?
- javascript - 如何使用 foreach 循环在其他异步调用中进行异步调用
- r - 使用管道时如何为变量命名
- android - FFmpegAndroid 库在压缩后旋转视频
- android - 用于创建读取或删除电话联系人的应用程序功能