2016-10-06 5 views
0

Я борюсь с этим 2 днями и стараюсь почти все, что я нашел в Интернете. У меня есть SOAP-сервис с именем пользователя и паролем в заголовке securityContext, но я понятия не имею, как предоставить данные в этой форме на PHP?PHP SOAP Credentials в безопасности заголовкаContext

Это требуется заголовок XML:

<soap:Header> 
    <SecurityContext xmlns="http://tempuri.org/"> 
     <userName>string</userName> 
     <password>string</password> 
    </SecurityContext> 
</soap:Header> 

ответ

0

Да, мне удалось его работать. Вот что необходимо, если у кого-то есть аналогичная проблема.

часть для добавления значений заголовков:

$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), 
    );