@kirill-93

Авторизация через soap?

Есть соар сервис, в нем wsdl документ обращаюсь к этому документу через soapUI и вижу список его методов, при выборе нужного мне метода получаю xml:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:out="http://realobs.com/service/outgoing2">
   <soapenv:Header/>
   <soapenv:Body>
      <out:hotelSearchStep1Request outOperatorIncID="?" dateFrom="?" nightsDuration="?" availableOnly="?">
         <out:persons adults="?">
            <out:childAges/>
         </out:persons>
         <out:locationIds>
            <!--Zero or more repetitions:-->
            <out:long>?</out:long>
         </out:locationIds>
         <!--Optional:-->
         <out:hotelIds>
            <!--Zero or more repetitions:-->
            <out:long>?</out:long>
         </out:hotelIds>
         <!--Optional:-->
         <out:hotelServices>
            <!--Zero or more repetitions:-->
            <out:long>?</out:long>
         </out:hotelServices>
      </out:hotelSearchStep1Request>
   </soapenv:Body>
</soapenv:Envelope>


Помимо этого, в панели слева ввожу данные для авторизации.
Как мне эмулировать это в скрипте php?
  • Вопрос задан
  • 3648 просмотров
Пригласить эксперта
Ответы на вопрос 2
Что именно эмулировать? Работу PHP с SOAP? Так есть же специальные функции и классы: fi2.php.net/manual/ru/class.soapclient.php
Ответ написан
@CerberIsety
Вообще в SoapUI есть внизу кнопка "http log", которая показывает все исходящие и входящие запросы. А в указанном вами сервисе используется WS-авторизация. Реализуется она в xml head примерно так:
$login="login";
$password="pass";
$xml='<soapenv:Envelope xmlns:out="http://realobs.com/service/outgoing2" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header><wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken><wsse:Username>'.$login.'</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header>
   <soapenv:Body>
      <out:hotelSearchStep1Request outOperatorIncID="?" dateFrom="?" nightsDuration="?" availableOnly="?">
         <out:persons adults="?">
            <out:childAges/>
         </out:persons>
         <out:locationIds>
            <!--Zero or more repetitions:-->
            <out:long>111756</out:long>
         </out:locationIds>
         <!--Optional:-->
         <out:hotelIds>
            <!--Zero or more repetitions:-->
            <out:long>?</out:long>
         </out:hotelIds>
         <!--Optional:-->
         <out:hotelServices>
            <!--Zero or more repetitions:-->
            <out:long>?</out:long>
         </out:hotelServices>
      </out:hotelSearchStep1Request>
   </soapenv:Body>
</soapenv:Envelope>';
$c=new SoapClient("http://test.bestoftravel.cz:8080/booking/public/ws/searchHotel.wsdl");
$resp=$c->__doRequest($xml,"http://test.bestoftravel.cz:8080/booking/public/ws/searchHotel","hotelSearchStep1","1.1");
echo $resp;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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