使用PHP,我需要在页脚中发送带有参数(哈希)的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方法中有SoapClient::__setSoapHeaders种方法,但与页脚无关。
我无权访问服务器,应遵循上述结构。
我需要知道的是如何使用SoapClient发送页脚中的HASH参数。
在此先感谢您的帮助或建议。
答案 0 :(得分:0)
正如IMSoP和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);