PHP - 如何在 SoapClient 中设置页脚

PHP - How to set footer in SoapClient

对于 PHP,我需要在页脚中发送一个带有参数 (Hash) 的 SOAP 请求。我正在使用 SoapClient 但我无法弄清楚如何执行此操作,无论是在互联网搜索中还是在 documentation.

这是我在SoapUI工具中用来测试的信封:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:abc="" xmlns:abc1="" xmlns:abc2="">
   <soapenv:Header/>
   <soapenv:Body>
      <abc:Method>
         <!--Optional:-->
         <abc:request>
            <abc1:Header>
               <abc1:Username>Username</abc1:Username>
               <abc1:Password>Password</abc1:Password>
               <!--Optional:-->
               <abc1:PublicKeyUid></abc1:PublicKeyUid>
            </abc1:Header>
            <abc1:Body>
               <abc2:Id></abc2:Id>
            </abc1:Body>
            <abc1:Footer>
                <abc1:Hash></abc1:Hash>
            </abc1:Footer>
         </abc:request>
      </abc:Method>
   </soapenv:Body>
</soapenv:Envelope>

The SoapHeader class e the SoapClient::__setSoapHeaders 方法,但我找不到与页脚相关的内容。

我没有访问服务器的权限,应该遵循上面提到的这个结构。

我需要知道的是如何使用 SoapClient 发送页脚内的 HASH 参数。

在此先感谢您的帮助或建议。

正如 IMSoP and axiac 评论的那样,页脚 (<abc1: Footer>) 只是信封主体的子结构,而不是标准的 XML 信封元素。我没有意识到这一点,所以我没有在文档中找到它。

因此,要将 HASH 发送到请求的结构,我需要在 body 元素上传递一个多维数组。代码如下所示:

$arrParameters = [
    'request'=>[
        'Header'=>[
            'Username'=>$strUsername,
            'Password'=>$strPassword
        ],
        'Body'=>[
            ...
        ],
        'Footer'=>[
            'Hash'=>$strHash
        ]
    ]
];

$SoapClient = new SoapClient(<WSDL URL>);

$resp = $SoapClient->method($arrParameters);


谢谢IMSoP and axiac