@maximmax

Как залогиниться в SOAP сервисе?

Имеется структура запроса:

POST https://хххххх&WSSOAP=1 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "document/http://ххххх:testStatus"
Content-Length: 572
Host: xxxxxx
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="nameSpace">
   <soapenv:Header>
      <Token xmlns="http://xxxxxx">Login</UsernameToken>
      <Password xmlns="http://xxxxxx">Password</PasswordText>
      <Session xmlns="http://xxxxxx">Session</SessionType>
   </soapenv:Header>
   <soapenv:Body>
      <ws:testStatus_Input>
         <ws:statId>xxxxxx</ws:statId>
      </ws:testStatus_Input>
   </soapenv:Body>
</soapenv:Envelope>


Требуется с этими данными залогиниться в сервисе.

Подключаю wsdl:
$client = new SoapClient("wsdl.wsdl", Array("exceptions"=>0,"trace" => 1));


Формирую хедер:
$headerbody = array('Token' => 'Login',
                    'Password' => 'Password');
$header = new SOAPHeader('nameSpace', 'RequestorCredentials', $headerbody);       
$client->__setSoapHeaders($header);


Вызываю метод:
$result = $client->testStatus(array("statId"=>"xxxxxx"));
echo $result;


Получаю ошибку:
"SoapFault exception: [SOAP-ENV:Client] Error Code: 10944642 Error Message: Error: Inbound SOAP Message - Session Token is missing or invalid or has expired in /var/www/хххх:15 Stack trace: #0 /var/www/хххххх(15): SoapClient->__call('testStatus', Array) #1 /var/www/xxxxx(15): SoapClient->testStatus(Array) #2 {main}".

Не могу понять, проблема в том, что не получается залогиниться? Ведь токен и пароль верные, или как-то не правильно обращаюсь к сервису?
  • Вопрос задан
  • 3419 просмотров
Пригласить эксперта
Ответы на вопрос 3
@maximmax Автор вопроса
Да, извиняюсь, это я чего-то правил, хотел покороче. На самом деле он именно так и выглядит:

<UsernameToken xmlns="http://xxxxxx">Login</UsernameToken>
<PasswordText xmlns="http://xxxxxx">Password</PasswordText>
<SessionType xmlns="http://xxxxxx">Session</SessionType>


Ошибка всё-равно.
Ответ написан
@T_Oleg
Друзья, тема актуальная и однотипная.

$headerbody = array(
                     'UsernameToken'    =>    Token',
                     'PasswordText'    =>    'Text',
                     'SessionType'    =>    'Type');


В итоге ошибка

Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Error Code: 10944642 Error Message: Error: Inbound SOAP Message - Session Token is missing or invalid or has expired in /home/ххх/ххх.php:6 Stack trace: #0 /home/industri/inspires.com.ua/devel/soap/otp.php(6): SoapClient->__call('checkOptyStatus', Array) #1 /home/ххх/ххх.php(6): SoapClient->checkOptyStatus(Array) #2 {main} thrown in /home/ххх/ххх.php on line 6
Ответ написан
Комментировать
@ChernovGV
Посмотрите какой запрос вы формируете:
try {
                $request = $client->method($object);
            } catch (SoapFault $exception) {
                print_r($client->__getLastRequest());
                return false;
            }

Может быть структура пакета не правильная получается
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы