В PHP мне нужно отправить SOAP-запрос с параметром (Hash) в нижний колонтитул. Я использую SoapClient, но не могу понять, как это сделать, ни в интернет-поисках, ни в документация.
Это конверт, который я использовал в инструменте 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>
Есть Класс SoapHeader е SoapClient :: __ setSoapHeaders метод, но я не нахожу ничего связанного с нижним колонтитулом.
У меня нет доступа к серверу, и я должен следовать этой структуре, упомянутой выше.
Что мне нужно знать, это как отправить параметр HASH, который находится внутри нижнего колонтитула с SoapClient.
Заранее спасибо за любую помощь или предложение.
Как 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);
Других решений пока нет …