За последние 24 часа нас посетили 19094 программиста и 1641 робот. Сейчас ищет 951 программист ...

SOAP Client PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем mozzart-live, 13 авг 2013.

  1. mozzart-live

    mozzart-live Новичок

    С нами с:
    13 авг 2013
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Челябинск
    Здравствуйте!

    До сего момента не приходилось отправлять параметры по SOAP. Сейчас возникла нужда сформировать вот такую структуру параметра:

    Код (Text):
    1. <wsLoginPassword xsi:type="java:WsLoginPassword" xmlns:java="java:com.nt.slib.ws.wssearch">
    2. <wslogin xsi:type="xsd:string">YOUR_LOGIN</wslogin>
    3. <wspassword xsi:type="xsd:string">your_password</wspassword>
    4. </wsLoginPassword>
    Делаю вот что:

    Код (Text):
    1. $params = array(
    2. new SoapVar('login', 'wslogin'),
    3. new SoapVar('123', 'wspassword')
    4. );
    5. $var = new SoapVar(Array('wsLoginPassword' => $params), SOAP_ENC_OBJECT, 'wsLoginPassword', 'http://www.natalie-tours.ru/webservices');
    6. $client = new SoapClient('http://www.natalie-tours.ru/webservice/BookingWS?WSDL', array('trace' => 1));
    7. $client->getAllRegions($var);
    После выполнения пишет что логин не верный. Предполагаю, что запрос кривой. Подскажите пожалуйста, в какую сторону копать?
     
  2. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    реквестирую:
    Код (PHP):
    1. var_dump($client->__getLastRequest()); 
     
  3. mozzart-live

    mozzart-live Новичок

    С нами с:
    13 авг 2013
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Челябинск
    Вот что выдает ласт реквест:
    Код (Text):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://www.natalie-tours.ru/webservices"><SOAP-ENV:Body><ns1:getAllRegions xsi:type="ns1:wsLoginPassword"><wsLoginPassword><xsd:anyType xsi:type="xsd:wslogin">login</xsd:anyType><xsd:anyType xsi:type="xsd:wspassword">123</xsd:anyType></wsLoginPassword></ns1:getAllRegions></SOAP-ENV:Body></SOAP-ENV:Envelope>
     
  4. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    А по структуре точно функция принимает авторизацию?
    Или же там, подразумевается отдельная переменная в запросе для авторизации?
     
  5. mozzart-live

    mozzart-live Новичок

    С нами с:
    13 авг 2013
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Челябинск
    Вот здесь описание: http://www.natalie-tours.ru/webservices/

    Насколько я понял, именно функция принимает автоизацию. Т.к. при попытке ничего не передавать в функцию возникает ошибка
    Код (Text):
    1. Exception during processing: java.lang.IllegalArgumentException (see Fault Detail for stacktrace)
     
  6. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Хорошо, а теперь внимательно смотрим все реквесты, вот тот, что поменьше листингом:
    Код (Text):
    1.  
    2. <soapenv:Body>
    3. <tem:cancelOrder soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    4. <wsBookingLoginPassword xsi:type="java:WsLoginPassword" xs:type="type:WsLoginPassword" xmlns:java="java:com.nt.slib.ws.wssearch"
    5. xmlns:xs="http://www.w3.org/2000/XMLSchema-instance">
    6. <wslogin xsi:type="xsd:string">YOUR_LOGIN</wslogin>
    7. <wspassword xsi:type="xsd:string">your_password</wspassword>
    8. </wsBookingLoginPassword>
    9. <orderCancellationRequest xsi:type="java:OrderCancellationRequest" xs:type="type:OrderCancellationRequest"
    10. xmlns:java="java:com.nt.slib.ws.wssearch.booking.protocol.cancellation" xmlns:xs="http://www.w3.org/2000/XMLSchema-instance">
    11. <orderId xsi:type="xsd:long">84492758</orderId>
    12. </orderCancellationRequest>
    13. </tem:cancelOrder>
    14. </soapenv:Body>
    Таки да, кривовато у тебя выходит, чота я сам запутался )
     
  7. mozzart-live

    mozzart-live Новичок

    С нами с:
    13 авг 2013
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Челябинск
    Всем спасибо. Разобрался.

    Код (Text):
    1. $params = new stdClass();
    2.         $params->wsLoginPassword = new stdClass();
    3.         $params->wsLoginPassword->wslogin = "login";
    4.         $params->wsLoginPassword->wspassword = "123";
    5.  
    6.         $authSoapVar = new SoapVar($params, SOAP_ENC_OBJECT, 'wsLoginPassword', 'http://www.natalie-tours.ru/webservices');
    7.  
    8.         $client = new SoapClient('http://www.natalie-tours.ru/webservice/BookingWS?WSDL', array('trace' => 1));
    9.  
    10.         var_dump($client->getAllRegions($authSoapVar));