Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > ПОлучение результатов SOAP


Автор: baryshkov 19.2.2015, 10:13
Здравствуйте, хочу сделать интеграцию своего сайта с другим сервисом через SOAP!
Код

$client = new SoapClient('http://smsc.ru/sys/soap.php?wsdl');
$ret = $client->send_sms(array('login'=>'alex', 'psw'=>'123', 'phones'=>'79999999999', 'mes'=>'Hello world!', 'id'=>'', 'sender'=>'ivan', 'time'=>0)); 

СЕрвис отрабатывает. Но беда, в том что не могу получить результат выполнения функции!
Код

$client->__getLastResponse()

Возвращает ответ, а вот как массив ПХП не могу получить. Кто может подсказать!
ЗАранее спасибо!

Автор: bars80080 23.2.2015, 23:58
вообще, надо документацию смотреть. по wsdl видно, что метод send_sms должен возвращать ответ SendOut, который должен состоять из объекта parameters->statusresult содержащего такой набор свойств:
<xsd:element minOccurs="0" maxOccurs="1" name="status" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="last_date" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="last_timestamp" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="err" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="error" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="send_date" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="send_timestamp" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="phone" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="cost" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="sender_id" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="status_name" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="message" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="operator" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="region" type="xsd:string"/>

сделайте var_dump() ответу и посмотрите, что пришло

Автор: krypt3r 25.2.2015, 15:24
Видимо, тут нужен SoapClient с установленной опцией classmap

Автор: Сумасшедший 28.2.2015, 07:34
Таки вам же в ret объект в результате дают. Т.е. например берёте после проверки усешности выполнения запроса и говорите:
Код

print $ret->sendresult->error . "\n";

а он в ответ двоечку пропишет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)