首页 > 解决方案 > 具有多个命名空间的 SOAP 请求

问题描述

我发送一个 POST 请求以从一家运输公司生成 AWB。为此,我必须通过 SOAP API POST 请求发布多个数据条目。下面的 XML 是类似的,是必需的(我已经简化了,否则它要求 >30 个参数)

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schemas.datacontract.org/2004/07/PostaWebClient"
xmlns:ns2="http://tempuri.org/" name="Shipment_Creation">
    <SOAP-ENV:Body>
        <ns2:Shipment_Creation>
            <ns2:SHIPINFO>
                <ns1:ClientInfo>
                    <ns1:UserName>String</ns1:UserName>
                </ns1:ClientInfo>                
                <ns1:CodeShippmentType>SHPT2</ns1:CodeShippmentType>                 
            </ns2:SHIPINFO>
        </ns2:Shipment_Creation>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我怎样才能达到同样的效果,我正在使用 SoapClient 并在“发货创建”标签之间发送参数数组,但出现以下错误

格式化程序在尝试反序列化消息时抛出异常:反序列化操作“Shipment_Creation”的请求消息正文时出错。预期来自命名空间“ http://schemas.xmlsoap.org/soap/envelope/ ”的结束元素“正文”。从命名空间“”中找到元素“param1”。第 2 行,位置 246。

我是 SOAP 新手,请帮助我朝着正确的方向前进,我什至非常感谢上面 XML 的代码,因为它有助于更​​好地理解。

标签: phpsoapsoapui

解决方案


您不需要元素name="Shipment_Creation"中的属性。SOAP-ENV:Envelope只需将其删除。

您已经使用ns2.


推荐阅读