Я борюсь с этим 2 дня и пробую почти все, что я нашел в Интернете. У меня есть сервис SOAP с именем пользователя и паролем в заголовке securityContext, но я не знаю, как предоставить данные в этой форме в PHP?
Это обязательный заголовок XML:
<soap:Header>
<SecurityContext xmlns="http://tempuri.org/">
<userName>string</userName>
<password>string</password>
</SecurityContext>
</soap:Header>
Да, мне удалось это сработать. Вот что нужно, если у кого-то есть подобные проблемы.
Часть для добавления значений заголовка:
$soap = new SoapClient($wsdl, $options);
$auth = array(
'userName' => self::SOAP_USERNAME,
'password' => self::SOAP_PASSWORD,
);
$header = new SoapHeader(self::SOAP_NAMESPACE, 'SecurityContext', $auth);
$soap->__setSoapHeaders($header);
Кроме того, так как это запрос https, мне нужно было добавить несколько опций ssl:
// set stream context opts
$opts = array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
),
);
// set options
$options = array(
'encoding' => 'UTF-8',
'soap_version' => SOAP_1_2,
'cache_wsdl' => WSDL_CACHE_NONE,
'connection_timeout' => 15,
'login' => self::SOAP_USERNAME,
'password' => self::SOAP_PASSWORD,
'stream_context' => stream_context_create($opts),
);
Других решений пока нет …