Заголовки для подключения к веб-сервису SOAP с использованием PHP - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь подключиться к веб-сервису SOAP с помощью php.Я очень новичок в использовании php.

Я могу подключиться к службе, тест ниже возвращает список всех доступных функций веб-службы.

$url = "http://...client_ip.../dkServiceDefault/dkWSItemsCGI.exe/wsdl/IItemService";
$client = new SoapClient($url);
var_dump($client->__getFunctions());

Если я пытаюсь получить доступодна из этих функций (например, NumberOfModifiedItems), затем я получаю сообщение об ошибке, в котором говорится, что мне нужно предоставить заголовок SOAP с именем пользователя и паролем.

В соответствии с документацией службы SOAP заголовок должен выглядеть следующим образом:

<soap:Header>
    <q1:BasicSecurity id="h_id1" xmlns:q1="urn:dkWSValueObjects">
        <Username xsi:type="xsd:string">username</Username>
        <Password xsi:type="xsd:string">password</Password>
    </q1:BasicSecurity>
</soap:Header>

Как сделать этот заголовок в php?Как мне прикрепить его к SoapClient?У меня есть имя пользователя и пароль, но я не могу понять, как создать точный заголовок для отправки в веб-службу.Я пробовал следовать нескольким учебникам, но мне просто не удается заставить его работать.

1 Ответ

0 голосов
/ 28 января 2019

Вы можете передавать SOAP-заголовки с SoapHeader классом и SoapClient :: __setSoapHeaders метод:

<?php
$url = "http://...client_ip.../dkServiceDefault/dkWSItemsCGI.exe/wsdl/IItemService";
$client = new SoapClient($url);

$namespace = "urn:dkWSValueObjects";
$authentication = array(
    'Username' => 'yourname',
    'Password' => 'yourpassword'
);
$header = new SoapHeader($namespace, 'BasicSecurity', $authentication, false);
$client->__setSoapHeaders($header);

var_dump($client->__getFunctions());
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...