SOAP. JSON.

palegen

Новичок
Сейчас идет всеобщая автоматизация медицины. У каждой больницы были свои программы, но теперь всем навязали одну, так называемую РМИС. Идея хорошая, но программа тормознутая, трудная и дорогая. Техподдержка на минимуме. Единственный плюс, предоставлен список ресурсов для интеграции с собственным ПО в формате WSDL и JSON. Через SoapUI 5.2.1 тестирую - все работает. Самому реализовать на PHP не получается.
Уважаемое сообщество, помогите разобраться с запросами и ответами SOAP.
 

palegen

Новичок
Продолжение темы. С помощью SoapUI работают все запросы. Через $client = new SoapClient($wsdl,$options); если в запросе есть данные запроса или (как сейчас предполагаю, ожидается ответ с русским текстом), приходит ответ: stdClass Object ( ),
пустой же запрос (или без русских слов), скажем запрос версии или времени:
PHP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://atria.cz/nsi/types">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:getServerTimeRequest/>
   </soapenv:Body>
</soapenv:Envelope>
возвращает ответ: stdClass Object ( [timestamp] => 2016-03-25T15:13:03.286+05:00 ) .
Запрос же по другому адресу, с данными в запросе, возвращает ответ с русскими словами, но совершенно иной (в отличии от правильного в SoapUI), причем независимо от различных данных в запросе, ответ один и тот же.
В $options пробовал всевозможные комбинации, без первых четырех ничего не работает, остальные - без изменений:
PHP:
$options = array('login' => $login,'password' => $password,
      'proxy_host' => $proxy_host,'proxy_port' => $proxy_port);
//      'cache_wsdl' => 0, 'exceptions' => 1,'trace' => 1,
//      'authentication' => SOAP_AUTHENTICATION_DIGEST,
//      'encoding'=>'UTF-8','compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
//      'style' => SOAP_RPC,  'use' => SOAP_ENCODED);
Подскажите куда копать, уже пол месяца бьюсь...
 
Последнее редактирование:

palegen

Новичок
Кстати, совсем забыл, на другом (тестовом) сервере, все работает замечательно, даже без $options
PHP:
$wsdl = "http://medved.miacugra.ru/NSIService/Nsi?WSDL";
$query = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://com.host.medvedweb.system.ws.send.nsi/">
   <soapenv:Header/>
   <soapenv:Body>
      <com:getRefBookList/>
   </soapenv:Body>
</soapenv:Envelope>';
$client = new SoapClient($wsdl);
//$functions = $client->__getFunctions();foreach($functions as $func) {echo $func . "<br>";}
$result = $client->getRefBookList($query);
echo '<pre>';var_dump($result);echo '</pre>';
правда я пока не знаю как ответ получить в формате SOAP, но это пока не важно.
 
Последнее редактирование:
Сверху