Shu*_*eng 5 .net c# asp.net .net-core
我已经安装Microsoft.AspNetCore.Mvc.Formatters.Xml并设置如下ConfigureServices():
services.AddMvc().AddXmlSerializerFormatters();
Run Code Online (Sandbox Code Playgroud)
现在,我创建了一个简单的 Web API,如下所示:
[HttpPost]
[Consumes("application/json", new string[]{"application/xml"})]
public ActionResult<string> OnPost([FromBody] ZapScan scan)
{
return scan.ToString();
}
Run Code Online (Sandbox Code Playgroud)
接受一个ZapScan通过模型绑定:
public class ZapScan
{
public string Url { get; set; }
public bool Priority { get; set; }
public override string ToString()
{
return $"url={Url}, priority={Priority}\n";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我从 Postman 发送的任何 XML 都被拒绝,例如:
<?xml version="1.0" encoding="UTF-8"?>
<zapscan>
<url>http://www.example.cm</url>
<priority>false</priority>
</zapscan>
Run Code Online (Sandbox Code Playgroud)
结果是:
{"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."]}}
Run Code Online (Sandbox Code Playgroud)
如何将 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
Run Code Online (Sandbox Code Playgroud)
此外,您还存在大小写问题,正如评论中已经讨论的那样。
| 归档时间: |
|
| 查看次数: |
2888 次 |
| 最近记录: |