首页 > 解决方案 > 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个问题:

  1. 我需要那个 XML 版本信息,还是可以删除它。我怎样才能做到这一点?
  2. 我怎样才能摆脱那个空命名空间?
  3. “urn:sap-com:document:sap:soap:functions:mc-style”的命名空间不是在错误的节点上吗?这怎么能被纠正或者它不重要?

标签: xmldelphisoapwsdl

解决方案


推荐阅读