xml - Delphi 10.2 SOAP WSDL 导入 - XML Mailformed
问题描述
ERP 系统有一个非常简单的 SOAP 接口。我试图通过 delphi WSDL Importer 导入 WSDL 文件来与该系统对话。一切都按预期正常工作。
存在端口,存在接口,使用 BasicAuth 添加 HTTPRIO 对象,一切都很好。不幸的是,当我将数据发送到服务时,服务器无法处理数据。比我尝试使用具有该服务的相同 WSDL 文件的 SOAP-UI。一切正常。所以我使用 Wireshar 来嗅探网络流量之间的差异,并认为我找到了问题所在。首先是来自这 2 个系统的 XML 文件。第一个有效的 SOAP-UI:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:ZxftSamWsRecCrea>
<!--Optional:-->
<ImCustomerId>
007
</ImCustomerId>
<!--Optional:-->
<ImSearchVal>
MASCHINE
</ImSearchVal>
<ImVkc>
0815
</ImVkc>
<!--Optional:-->
<ImVkcDescr>
Test VKC
</ImVkcDescr>
</urn:ZxftSamWsRecCrea>
</soapenv:Body>
</soapenv:Envelope>
这是由 Delphi 创建的 XML 文件:
<?xml
version="1.0"
?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ZxftSamWsRecCrea
xmlns="urn:sap-com:document:sap:soap:functions:mc-style">
<ImCustomerId
xmlns="">007
</ImCustomerId>
<ImSearchVal
xmlns="">MASCHINE
</ImSearchVal>
<ImVkc
xmlns="">0815
</ImVkc>
<ImVkcDescr
xmlns="">Test VKC
</ImVkcDescr>
</ZxftSamWsRecCrea>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我心中的3个问题:
- 我需要那个 XML 版本信息,还是可以删除它。我怎样才能做到这一点?
- 我怎样才能摆脱那个空命名空间?
- “urn:sap-com:document:sap:soap:functions:mc-style”的命名空间不是在错误的节点上吗?这怎么能被纠正或者它不重要?
解决方案
推荐阅读
- ajax - 查找通过 AJAX 加载的 URL
- javascript - 如何清除if语句中的间隔
- visual-studio-code - vscode live 服务器端口设置不起作用,总是在 localhost:8081 中打开
- c# - 如何在关闭事件时不冻结 wpf 应用程序
- python - 为 pypy3 OS Debian 安装 pip 和 numpy
- javascript - Node.js:Socket.io 发出方法未触发
- java - JSoup 未完全呈现长页面
- javascript - 更改 div 时重新启动 javascript 变量
- c# - EF Core 3 未在第二级或更深层次加载相关数据
- django - 在 Django 应用程序中显示 PDF 并且需要选择一个被单击的单词并在警报框中显示相同的单词