Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SOAP: формирование простого xml запроса.
Форумы портала PHP.SU » » XML и его обработка » SOAP: формирование простого xml запроса.

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

1. mac0s - 25 Октября, 2013 - 11:03:10 - перейти к сообщению
Доброе время суток.
Измучился весь. Нужен пример построения простого xml запроса:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ais="http://soap-server.ru/">
  3.         <soap:Header/>
  4.         <soap:Body>
  5.                 <ais:Logon>
  6.                         <ais:Login>login</ais:Login>
  7.                         <ais:Password>pass</ais:Password>
  8.                 </ais:Logon>
  9.         </soap:Body>
  10. </soap:Envelope>
  11.  


Прямой запрос выполняется:
CODE (php):
скопировать код в буфер обмена
  1.  
  2. try {
  3.         $login = 'login';
  4.         $pass = '***';
  5.         $request='
  6.                 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ais="http://soap-server.ru">
  7.                 <soap:Header/>
  8.                 <soap:Body>
  9.                         <ais:Logon>
  10.                                 <ais:Login>'.$login.'</ais:Login>
  11.                                 <ais:Password>'.$pass.'</ais:Password>
  12.                         </ais:Logon>
  13.                 </soap:Body>
  14.         </soap:Envelope>';
  15.         $soapClient = new SoapClient(null, array('location'=>"",'uri'=>""));
  16.         $response = $soapClient->__doRequest($request, 'https://soap-server.ru/uri', 'http://soap-server.ru/Logon',SOAP_1_2);
  17.         print_r($response);
  18. }
  19. catch (SoapFault $exc) {
  20.         print_r($exc->getMessage());
  21. }
  22.  


но перепробовал всевозможные способы формирования xml с помощью soap библиотеки и ничего не вышло.
Валятся ошибки:

или если обращаться к wsdl серверу, то
CODE (text):
скопировать код в буфер обмена
  1. SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://soap-server.ru/uri?WSDL' : failed to load external entity "http://soap-server.ru/uri?WSDL"


Варианты:
CODE (php):
скопировать код в буфер обмена
  1.  
  2. $login = 'login';
  3. $pass = '***';
  4. try {
  5.         $connectArr = array(
  6.                 'Login'=>$login,
  7.                 'Password'=>$pass
  8.         );
  9.         $connectArr2 = array(
  10.                 'Logon'=>array(
  11.                         'Login'=>$login,
  12.                         'Password'=>$pass
  13.                 )
  14.         );
  15.  
  16.         $connectStd = new stdClass();
  17.         $connectStd->Login=$login;
  18.         $connectStd->Password=$pass;
  19.  
  20.         $connectStd2 = new stdClass();
  21.         $connectStd2->Logon = new stdClass();
  22.         $connectStd2->Logon->Login=$login;
  23.         $connectStd2->Logon->Password=$pass;
  24.  
  25.         $soapParams = array(
  26.                 new SoapParam($login,"Login"),
  27.                 new SoapParam($pass,"Password")
  28.         );
  29.         $soapParams2 = array(
  30.                 new SoapParam(array(
  31.                         new SoapParam($login,"Login"),
  32.                         new SoapParam($pass,"Password")
  33.                 ),"Logon"),
  34.         );
  35.  
  36. //      $wsdl = 'http://soap-server.ru/uri?WSDL';
  37. //      $soapClient = new SoapClient($wsdl);
  38. //      $soapClient = new SoapClient($wsdl,$connectArr);
  39.         $soapClient = new SoapClient(null, array(
  40.                 'location' => "https://soap-server.ru",
  41.                 'uri'      => "uri",
  42. //              'Logon'=>$connectArr
  43.         ));
  44.  
  45.         $response=array();
  46. //      $response['v1'] = $soapClient->__soapCall('Logon', $connectArr);
  47. //      $response['v2'] = $soapClient->__soapCall('Logon', $connectArr2);
  48. //      $response['v3'] = $soapClient->Logon($connectArr);
  49.         $response['v4'] = $soapClient->Logon($connectArr2);
  50.         print_r($response);
  51. }
  52. catch (SoapFault $exc) {
  53.         print_r($exc->getMessage());
  54. }
  55.  
2. mac0s - 25 Октября, 2013 - 14:48:18 - перейти к сообщению
Задача решена: http://php[dot]ru/forum/viewtopic[dot]ph[dot][dot][dot]p=367758#p367758

 

Powered by ExBB FM 1.0 RC1