Форумы портала PHP.SU » PHP » PEAR и PECL » SOAP

Страниц (1): [1]
 

1. V2oD2o - 06 Сентября, 2012 - 12:11:07 - перейти к сообщению
phpinfo:
Soap Client enabled
Soap Server enabled

Ниразу с ним не работал..

test.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo "ДО..";
  3. $client = new SoapClient("www.freewebs.com/jimmy_cheng/CurrencyExchangeService.wsdl");
  4. $result = $client->__getFunctions();
  5. echo $result;
  6. echo "ПОСЛЕ..";
  7. ?>


при загрузке выдает только "ДО.." и все.. если удалить [echo "ДО..";] то "страница не существует"..

подскажете ?
2. Мелкий - 06 Сентября, 2012 - 12:16:05 - перейти к сообщению
У вас отключён вывод ошибок.

PHP:
скопировать код в буфер обмена
  1. $client = new SoapClient("http://www.freewebs.com/jimmy_cheng/CurrencyExchangeService.wsdl");

http здесь обязателен.
(Добавление)
Ну и __getFunctions() возвращает массив. Делать echo массиву, в общем-то, бессмысленно.
3. V2oD2o - 06 Сентября, 2012 - 12:30:52 - перейти к сообщению
Спасибо большое за подсказку насчет http:// заработало..
(Добавление)
вот описание по WSDL сайту:

FindDetailAdv2
Метод возвращает массив объектов DetailItem в компактном варианте.

Метод имеет следующие параметры:

login - логин клиента
password - пароль клиента
makeLogo - Лого фирмы*
detailNum – искомый номер детали
findSubstitutes - с заменами или без (true/false)

DetailItemсостоит из двух объектов - DetailInfo и Prices.
DetailInfo содержит информацию о детали и условиях поставки.
Prices содержит информацию о цене данной детали при этих условиях.


DetailInfo -> DetailNum = MD352626
DetailInfo -> Quantity = 20
Prices -> ResultPrice = 437.2300

--------------------------------

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $client = new SoapClient("http://ws.emex.ru/EmExService.asmx?wsdl", array("trace"=>1, "exceptions"=>0 ));
  3. $params=array();
  4. $params["login"]="ххх";  
  5. $params["password"]="ххх";
  6. $params["makeLogo"]="";  
  7. $params["detailNum"]="MD352626";
  8. $params["findSubstitutes"]=false;
  9. $result[] = $client->_call(FindDetailAdv2, $params);
  10. echo 'result='.$result['ResultPrice'];
  11. ?>


возвращает - пусто.. как правильно сформировать запрос?

(Добавление)

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $client = new SoapClient("http://ws.emex.ru/EmExService.asmx?wsdl", array("trace"=>1, "exceptions"=>0 ));
  3. $params=array();
  4. $params["login"]="ххх";  
  5. $params["password"]="ххх";
  6. $params["makeLogo"]="";  
  7. $params["detailNum"]="MD352626";
  8. $params["findSubstitutes"]=false;
  9. $result = $client->__getFunctions();
  10. foreach ($result as $val) {
  11.         echo $val."<br>";
  12. }
  13. ?>


работает:
TestConnectResponse TestConnect(TestConnect $parameters)
FindDetailAdvResponse FindDetailAdv(FindDetailAdv $parameters)
FindDetailAdv2Response FindDetailAdv2(FindDetailAdv2 $parameters)
FindDetailAdvGuestResponse FindDetailAdvGuest(FindDetailAdvGuest $parameters)
FindDetailAdvGuest2Response FindDetailAdvGuest2(FindDetailAdvGuest2 $parameters)
TestConnectResponse TestConnect(TestConnect $parameters)
FindDetailAdvResponse FindDetailAdv(FindDetailAdv $parameters)
FindDetailAdv2Response FindDetailAdv2(FindDetailAdv2 $parameters)
FindDetailAdvGuestResponse FindDetailAdvGuest(FindDetailAdvGuest $parameters)
FindDetailAdvGuest2Response FindDetailAdvGuest2(FindDetailAdvGuest2 $parameters)

--------------------------------

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $client = new SoapClient("http://ws.emex.ru/EmExService.asmx?wsdl", array("trace"=>1, "exceptions"=>0 ));
  3. $params=array();
  4. $params["login"]="ххх";  
  5. $params["password"]="ххх";
  6. $params["makeLogo"]="";  
  7. $params["detailNum"]="MD352626";
  8. $params["findSubstitutes"]=false;
  9. $result = $client->__call(FindDetailAdv2, $params);;
  10. foreach ($result as $val) {
  11.         echo $val."<br>";
  12. }
  13. ?>


AccessProvider::GetUser. Пустой логин или пароль. login=0, password=.
soap:Client
http://ws[dot]emex[dot]ru/EmExService[dot]asmx
4. V2oD2o - 07 Сентября, 2012 - 13:50:51 - перейти к сообщению
вообще никто не знает SOAP чтоли ? Однако

напишите элементарный рабочий пример хотябы..
например получение времени с сервера какого либо..
5. Zuldek - 07 Сентября, 2012 - 14:12:36 - перейти к сообщению
V2oD2o пишет:
вообще никто не знает SOAP чтоли ? Однако

напишите элементарный рабочий пример хотябы..
например получение времени с сервера какого либо..


Есть SOAP, а есть всякие пукалки-soap-клиенты: прочитать, отправить. Для второго вот пример-
http://php.su/articles/?cat=pear...;page=004#part_3
6. V2oD2o - 07 Сентября, 2012 - 14:30:33 - перейти к сообщению
десятки статей уже прочитал подобных этой, ниодного рабочего примера..
7. Okula - 07 Сентября, 2012 - 16:13:09 - перейти к сообщению
V2oD2o, вот тебе самый простой пример:
Файл stock.wsdl
CODE (xml):
скопировать код в буфер обмена
  1. <?xml version ='1.0' encoding ='UTF-8' ?>
  2. <definitions name='Stock'
  3.  targetNamespace='http://localhost/soap'
  4.  xmlns:tns=' http://localhost/soap '
  5.  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
  6.  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  7.  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
  8.  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
  9.  xmlns='http://schemas.xmlsoap.org/wsdl/'>
  10.  
  11. <message name='getStockRequest'>
  12.   <part name='id' type='xsd:string'/>
  13. </message>
  14. <message name='getStockResponse'>
  15.   <part name='Result' type='xsd:integer'/>
  16. </message>
  17.  
  18. <portType name='StockPortType'>
  19.   <operation name='getStock'>
  20.     <input message='tns:getStockRequest'/>
  21.     <output message='tns:getStockResponse'/>
  22.   </operation>
  23. </portType>
  24.  
  25. <binding name='StockBinding' type='tns:StockPortType'>
  26.   <soap:binding style='rpc'
  27.    transport='http://schemas.xmlsoap.org/soap/http'/>
  28.   <operation name='getStock'>
  29.     <soap:operation soapAction='urn:xmethods-delayed-quotes#getStock'/>
  30.     <input>
  31.       <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
  32.        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  33.     </input>
  34.     <output>
  35.       <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
  36.        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  37.     </output>
  38.   </operation>
  39. </binding>
  40.  
  41. <service name='StockService'>
  42.   <port name='StockPort' binding='StockBinding'>
  43.     <soap:address location='http://localhost/soap/server.php'/>
  44.   </port>
  45. </service>
  46. </definitions>


Файл server.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     class StockService {
  3.                 // Описание метода Web-сервиса
  4.                 function getStock($id) {       
  5.                         $stock = array(
  6.                                 "1" => 100,
  7.                                 "2" => 200,
  8.                                 "3" => 300,
  9.                                 "4" => 400,
  10.                                 "5" => 500
  11.                         );
  12.                         if (isset($stock[$id])) {
  13.                                 $quantity = $stock[$id];               
  14.                                 return $quantity;
  15.                         } else {
  16.                                 throw new SoapFault("Server", "Несуществующий id товара");
  17.                         }      
  18.                 }
  19.     }
  20.         //$a = new StockService();
  21.         //echo $a->getStock("2");
  22.         // Отключение кэширования WSDL-документа
  23.         ini_set("soap.wsdl_cache_enabled", "0");
  24.        
  25.         // Создание SOAP-сервер
  26.         $server = new SoapServer("http://localhost/soap/stock.wsdl");
  27.        
  28.         // Добавить класс к серверу
  29.         $server->setClass("StockService");
  30.        
  31.         // Запуск сервера
  32.         $server->handle();
  33. ?>


Файл client.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         try {
  3.                 // Создание SOAP-клиента
  4.                 $client = new SoapClient("http://localhost/soap/stock.wsdl");
  5.                
  6.                 // Посылка SOAP-запроса c получением результат
  7.                 $result = $client->getStock("7");
  8.                 echo "Текущий запас на складе: ", $result;
  9.         } catch (SoapFault $exception) {
  10.                 echo $exception->getMessage(); 
  11.         }
  12. ?>
8. V2oD2o - 07 Сентября, 2012 - 23:45:43 - перейти к сообщению
Спасибо большое!

получен долгожданный адекватный респонс без ошибок:

AccessProvider::GetUser. Неверный пароль или логин . login=123, password=456.
soap:Client
http://--[dot]---[dot]--/---------[dot]asmx

 

Powered by ExBB FM 1.0 RC1