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);
对于 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);