За последние 24 часа нас посетили 17650 программистов и 1721 робот. Сейчас ищут 1008 программистов ...

SOAP client

Тема в разделе "Прочие вопросы по PHP", создана пользователем MichaelPak, 3 фев 2012.

  1. MichaelPak

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

    С нами с:
    5 авг 2011
    Сообщения:
    46
    Симпатии:
    0
    Пытаюсь освоить веб сервис SOAP.
    Есть сервер, вызываю метод следующим кодом:
    Код (Text):
    1. <?php
    2.     $p2p['a']=array('name' => 0, 'password' => '123');
    3.     $p2p['b']='123';
    4.     $p2p['c']='32';
    5.     $client=new  SoapClient('example.wsdl');
    6.     $arr=$client->__getFunctions();
    7.     try
    8.     {
    9.         $str=$client->__soapCall('testMethod',array($p2p));
    10.          echo $str;
    11.     }
    12.     catch(SoapFault $e)
    13.     {
    14.         echo '<br> asd <br>'.$e->__toString();
    15.     }
    16.     $client->_getLastResponse();
    17.     echo 'complete';
    18. ?>
    Вылазеет ошибка:
    Код (Text):
    1. SoapFault exception: [Client] looks like we got no XML document in script.php:9 Stack trace #0 script.php(9): SoapClient->__soapCall('testMethod', Array) #1 {main}
    Ругается на __soapCall(). Не совсем понимаю, как загонять параметры в __soapCall().
    Что туда надо: ассоциативный массив или XML?
     
  2. AndreJM

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

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Что-то я не вижу смысла в низкоуровневом вызове.

    Код (PHP):
    1. $client->testMethod($p2p);
    2.  
     
  3. MichaelPak

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

    С нами с:
    5 авг 2011
    Сообщения:
    46
    Симпатии:
    0
    Вот такая ошибка выскакивает при $client->__soapCall('testMethod',array('p2p' => $p2p)):
    Код (Text):
    1. __toString(): SoapFault exception: [Client] looks like we got no XML document in /home/... Stack trace: #0 /home/... : SoapClient->__soapCall('testMethod', Array) #1 {main}
    2.  
    3. __getMessage(): looks like we got no XML document
    4.  
    5. __getTraceAsString(): #0 /home/...: SoapClient->__soapCall('testMethod', Array) #1 {main}
    И вот такая ошибка при $client->testMethod(array('p2p' => $p2p)):
    Код (Text):
    1. __toString(): SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'auth' property in /home/...  Stack trace: #0 /home/... : SoapClient->__call('testMethod', Array) #1 /home/... : SoapClient->testMethod(Array) #2 {main}
    2.  
    3. __getMessage(): SOAP-ERROR: Encoding: object hasn't 'auth' property
    4.  
    5. __getTraceAsString(): #0 /home/... : SoapClient->__call('testMethod', Array) #1 /home/... : SoapClient->testMethod(Array) #2 {main}
     
  4. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    http://www.php.ru/manual/book.soap.html - возможно, поможет. Посмотрите в комментариях (поиск на странице по looks, два комментария).
     
  5. AndreJM

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

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Второй эррор говорит, что отсутствует проперти auth в передаваемых параметрах testMethod
     
  6. MichaelPak

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

    С нами с:
    5 авг 2011
    Сообщения:
    46
    Симпатии:
    0
    auth - это одно из переменных ассоциативного массива, забыл исправить. То есть выглядит это так:
    Код (Text):
    1. $p2p['auth']=array('name' => 'bla-bla-bla', 'password' => 'bla-bla-bla');
    Но даже если я строчку эту закоменчу, ошибка такая же.