У меня есть приключение с 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 можно найти здесь. что полезного или интересного.
Заранее БОЛЬШОЕ спасибо всем, кто сможет обнаружить ошибку... или всем, кто попытается это сделать.