XML 发送到网络时正文为 null/default API
XML Body is null/default when sending to a web API
在过去的 2 天里,我一直在用头撞墙。
对于我们的客户端,我们需要在 API(.NET Core 3.1 或 .NET 5)中创建一个接受 XML (SOAP) 消息的接口。我正处于消息终于进入的地步,但它们总是 incomplete/null/default 正如你在图片上看到的那样。
客户端发送的内容(例1):
我们API收到了什么:
如果我们收到包含多个列表的 XML,则列表为空(示例 2):
这是怎么回事?我错过了什么吗?
编辑:
如果我按字母顺序排列 XML,它会起作用:
是的,在我的 Startup 中我使用了 XmlSerializers:
如果我使用 .AddXmlSerializerFormatters() 我什至无法发送 XML.
我测试了你的代码,你可以检查我的步骤。
测试XML:
public class TestXML
{
public int ID { get; set; }
public string Name { get; set; }
public List<TestXML_UoM_Item> TestXML_UoM_List { get; set; }
}
public class TestXML_UoM_Item
{
public string Name { get; set; }
}
XML:
<TestXML>
<TestXML_UoM_List>
<TestXML_UoM_Item>
<Name>aa</Name>
</TestXML_UoM_Item>
<TestXML_UoM_Item>
<Name>bb</Name>
</TestXML_UoM_Item>
</TestXML_UoM_List>
<ID>3</ID>
<Name>Gert</Name>
</TestXML>
StratUp:
services.AddControllersWithViews().AddXmlSerializerFormatters().AddXmlDataContractSerializerFormatters();
操作:
[HttpPost]
public void PostMds([FromBody]TestXML request)
{
//do your logic..
}
测试结果:
在过去的 2 天里,我一直在用头撞墙。 对于我们的客户端,我们需要在 API(.NET Core 3.1 或 .NET 5)中创建一个接受 XML (SOAP) 消息的接口。我正处于消息终于进入的地步,但它们总是 incomplete/null/default 正如你在图片上看到的那样。
客户端发送的内容(例1):
我们API收到了什么:
如果我们收到包含多个列表的 XML,则列表为空(示例 2):
这是怎么回事?我错过了什么吗?
编辑:
如果我按字母顺序排列 XML,它会起作用:
是的,在我的 Startup 中我使用了 XmlSerializers:
如果我使用 .AddXmlSerializerFormatters() 我什至无法发送 XML.
我测试了你的代码,你可以检查我的步骤。
测试XML:
public class TestXML
{
public int ID { get; set; }
public string Name { get; set; }
public List<TestXML_UoM_Item> TestXML_UoM_List { get; set; }
}
public class TestXML_UoM_Item
{
public string Name { get; set; }
}
XML:
<TestXML>
<TestXML_UoM_List>
<TestXML_UoM_Item>
<Name>aa</Name>
</TestXML_UoM_Item>
<TestXML_UoM_Item>
<Name>bb</Name>
</TestXML_UoM_Item>
</TestXML_UoM_List>
<ID>3</ID>
<Name>Gert</Name>
</TestXML>
StratUp:
services.AddControllersWithViews().AddXmlSerializerFormatters().AddXmlDataContractSerializerFormatters();
操作:
[HttpPost]
public void PostMds([FromBody]TestXML request)
{
//do your logic..
}
测试结果: