Неопределенное свойство при попытке получить значения с помощью SOAP

У меня есть приключение с SOAP API Openmeetings. Это мое первое родео с SOAP, так что не волнуйтесь, если решение здесь кажется очевидным.

Во всяком случае, я пытаюсь получить идентификатор сеанса с помощью следующего скрипта.

<?php
    $wsdl = "http://localhost:5080/openmeetings/services/UserService?wsdl";
    $session = new SoapClient($wsdl, array("trace" =>1, "exceptions"=>0));
    $value = $session->getSession();
    $xml = $value->getSessionResponse;
    $ssid = $xml->session_id;
    print "<br/>\n SSID: $ssid";
?>

Но я получаю следующие ошибки:

Примечание: Неопределенное свойство: stdClass::$getSessionResponse в /home/sam/www/soap.php в строке 5
Примечание: Попытка получить свойство не-объекта в /home/sam/www/soap.php в строка 6

Используя soapUI, я вижу, что отправляется следующее:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.axis.openmeetings.apache.org">
  <soapenv:Header/>
  <soapenv:Body>
      <ser:getSession/>
  </soapenv:Body>
</soapenv:Envelope>

Когда я выполняю это на soapUI, возвращается следующее (которое содержит все, что я хочу, и даже больше):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
      <ns:getSessionResponse xmlns:ns="http://services.axis.openmeetings.apache.org">
    <ns:return xsi:type="ax22:Sessiondata" xmlns:ax27="http://asterisk.sip.beans.persistence.openmeetings.apache.org/xsd" xmlns:ax213="http://basic.beans.data.openmeetings.apache.org/xsd" xmlns:ax24="http://domain.beans.persistence.openmeetings.apache.org/xsd" xmlns:ax21="http://user.beans.persistence.openmeetings.apache.org/xsd" xmlns:ax22="http://basic.beans.persistence.openmeetings.apache.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ax22:id>14</ax22:id>
        <ax22:language_id xsi:nil="true"/>
        <ax22:organization_id xsi:nil="true"/>
        <ax22:refresh_time>2013-09-26</ax22:refresh_time>
        <ax22:sessionXml xsi:nil="true"/>
        <ax22:session_id>90a4d3dc876460e119d068969def236c</ax22:session_id>
        <ax22:starttermin_time>2013-09-26</ax22:starttermin_time>
        <ax22:storePermanent xsi:nil="true"/>
        <ax22:user_id xsi:nil="true"/>
    </ns:return>
      </ns:getSessionResponse>
  </soapenv:Body>
</soapenv:Envelope

Поскольку на нем работает soapUI, я уверен, что используемый мной URL-адрес правильный и что API надежный. Может ли кто-нибудь найти, где я ошибаюсь в моем php?

Для справки: документацию по SOAP API для Openmeetings можно найти здесь. что полезного или интересного.

Заранее БОЛЬШОЕ спасибо всем, кто сможет обнаружить ошибку... или всем, кто попытается это сделать.


person neanderslob    schedule 26.09.2013    source источник


Ответы (1)


Здесь небольшое смущение. Когда я редактировал грамматику в посте, я заметил, что должен использовать «return» вместо «getSessionResponse». я просто заменил

$xml = $value->getSessionResponse;

с

$xml = $value->return;

и это сработало как шарм.

Извините за пустое место на сервере :-P

person neanderslob    schedule 26.09.2013