PHP - Как установить нижний колонтитул в SoapClient - PullRequest
0 голосов
/ 08 ноября 2018

В 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 e SoapClient :: __setSoapHeaders , но я не вижу ничего, связанного с нижним колонтитулом.

У меня нет доступа к серверу, и я должен следовать указанной выше структуре.

Мне нужно знать, как отправить параметр HASH, который находится внутри нижнего колонтитула, с помощью SoapClient.

Заранее спасибо за любую помощь или предложение.

1 Ответ

0 голосов
/ 09 декабря 2018

Как прокомментировали 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);


Спасибо IMSoP и axiac !

...