bboytiwst
@bboytiwst

Как правильно установить аутентификационный токен для SOAP запроса?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
   <soapenv:Header>
      <urn:OTAuthentication>
         <!--Optional:-->
         <urn:AuthenticationToken></urn:AuthenticationToken>
      </urn:OTAuthentication>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:GetNodes>
         <!--Zero or more repetitions:-->
         <urn1:IDs>2005</urn1:IDs>
      </urn1:GetNodes>
   </soapenv:Body>
</soapenv:Envelope>


SOAP UI генерирует вот такой код, в php через SoapClient установить перменную IDs получается без проблем, но не могу задать header для аутентификации.

Как правильно установить такой token?
<soapenv:Header>
      <urn:OTAuthentication>
         <!--Optional:-->
         <urn:AuthenticationToken></urn:AuthenticationToken>
      </urn:OTAuthentication>
   </soapenv:Header>


Задачу решил, сегодня добавлю решение
  • Вопрос задан
  • 3256 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Ke1eth
software engineer
Класс/заглушка для токена
class Token {
    public $id;

    public function __construct($id) {
        $this->id = $id;
    }    
}


Создаешь заголовок
$header = new SoapHeader("пространство имен, которому принаджеит: urn", "OTAuthentication", new Token('id'), false);


Устанавливаешь его в клиент:
$client->__setSoapHeaders(array($header));

Вот и все.
Ответ написан
bboytiwst
@bboytiwst Автор вопроса
Вот как у меня получилось решить это
$strHeaderComponent_Session = "<ns2:PRostranstvo><ns2:AuthenticationToken>$token</ns2:AuthenticationToken></ns2:PRostranstvo>";
$objVar_Session_Inside = new SoapVar($strHeaderComponent_Session, XSD_ANYXML, null, null, null);
$objHeader_Session_Outside = new SoapHeader('urn:burum burum', 'PRostranstvo', $objVar_Session_Inside);
$this->client->__setSoapHeaders([$objHeader_Session_Outside]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы