PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): « 1 2 3 4 5 6 [7]

> Найдено сообщений: 91
and_07 Отправлено: 18 Сентября, 2012 - 21:07:22 • Тема: Проблемы с SOAP • Форум: Программирование на PHP

Ответов: 0
Просмотров: 513
доброго времени суток всем
по работе пришлось столкнутся с SOAP
в общем сама проблема

сторона server

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Подключаем код NuSOAP
  3. require_once('nusoap.php');
  4. // Создаем экщемпляр сервиса
  5. $server = new soap_server();
  6. // Инициализируем поддержку WSDL
  7. $server->configureWSDL('testserver', 'urn:testserver');
  8. // Устанавливаем пространство имен с префиксом tns для WSDL-схемы
  9. $server->wsdl->schemaTargetNamespace = 'urn:testserver';
  10. // Регистрируем используемые сервисом структуы данных
  11. $server->wsdl->addComplexType(
  12.      'Order',
  13.      'complexType',
  14.      'struct',
  15.      'sequence',
  16.      '',
  17.      array(
  18.          'orders_id' => array('name' => 'orders_id', 'type' => 'xsd:int'),
  19.          'product_id' => array('name' => 'product_id', 'type' => 'xsd:int'),
  20.          'name_product' => array('name' => 'name_product', 'type' => 'xsd:string'),
  21.          'quantity' => array('name' => 'quantity', 'type' => 'xsd:int'),
  22.          'price_product' => array('name' => 'price_product', 'type' => 'xsd:int'),
  23.          'code' => array('name' => 'code', 'type' => 'xsd:string'),
  24.          'lastname' => array('name' => 'lastname', 'type' => 'xsd:string'),
  25.          'email' => array('name' => 'email', 'type' => 'xsd:string'),
  26.          'period' => array('name' => 'period', 'type' => 'xsd:int'),
  27.          'name' => array('name' => 'name', 'type' => 'xsd:string')
  28.      )
  29.  
  30.  );
  31.  
  32. $server->wsdl->addComplexType(
  33.     'TestOrder',
  34.     'complexType',
  35.     'array',
  36.     '',
  37.     'SOAP-ENC:Array',
  38.         array(),
  39.     array(
  40.                 'Order' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Order[]')
  41.         ),
  42.         'tns:Order'
  43. );
  44.  
  45.  $server->wsdl->addComplexType(
  46.      'Status',
  47.      'complexType',
  48.      'struct',
  49.      'all',
  50.      '',
  51.      array(  
  52.                 'greeting' => array('name' => 'greeting', 'type' => 'xsd:string'),
  53.          'status' => array('name' => 'status', 'type' => 'xsd:boolean')
  54.      )
  55.  );
  56.  
  57.  
  58. $server->register('test',                    // название метода
  59.      array('orders' => 'tns:TestOrder'),          // входные параметры
  60.      array('return' => 'tns:Status'),                   // выходные параметры
  61.      'urn:testserver',                         // пространство имен
  62.      'urn:testserver#test',                   // soapaction
  63.      'rpc',                                    // стиль
  64.      'encoded',                                // использование
  65.      'Greet a person entering the sweepstakes'        // документация
  66. );  
  67. function test($orders) {
  68.         /*  $greeting =  $orders[0]['orders_id'] .
  69.                 '' . $orders[0]['name_product'] .
  70.                 '' . $orders[0]['quantity'] . '';
  71.     **/  
  72.     // $winner = $orders['firstname'] == 'Scott';
  73.         file_put_contents($_SERVER['DOCUMENT_ROOT']."/SOAP/test.txt",print_r($orders,true));
  74.         $xx = print_r($orders,true);
  75.  
  76.  
  77.      $winner = true;
  78.  
  79.      return array(
  80.                  'greeting' => $xx ,
  81.                  'status' => $winner
  82.                  );
  83.  }
  84.  
  85. // Используем HTTP-запрос чтобы вызвать сервис
  86. $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
  87. $server->service($HTTP_RAW_POST_DATA);
  88. ?>


client
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $client = new SoapClient('http://..................ru/SOAP/testserver.php?wsdl');
  5.  
  6.                        
  7.                
  8.                                 $orders[0] = array (
  9.                                 'orders_id' => 7676,
  10.                                 'product_id' => 123,
  11.                                 'name_product' => 'Super',
  12.                                 'quantity' => 2,
  13.                                 'price_product'  => 1000,
  14.                                 'code'  => 'f234234',
  15.                                 'lastname'  => 'hjkhjk',
  16.                                 'email'  => 'test@er.er',
  17.                                 'period'  => 3,
  18.                                 'name'  => 'teg'
  19.                                 );
  20.                                
  21.                                 $orders[1]= array (
  22.                                 'orders_id' => 9898,
  23.                                 'product_id' => 5656,
  24.                                 'name_product' => 'Super555',
  25.                                 'quantity' => 1 ,
  26.                                 'price_product'  => 2000,
  27.                                 'code'  => 'f6556',
  28.                                 'lastname'  => 'sdfsdf',
  29.                                 'email'  => 'test1@er1.er',
  30.                                 'period'  => 2,
  31.                                 'name'  => 'tes'
  32.                                 );
  33.                        
  34. $res = $client->__soapCall("test",$orders);
  35. var_dump($res);
  36.  
  37. ?>
  38.  
  39.  


вся проблема не получается сформировать многомерный массив для передачи в функцию test те передается только
PHP:
скопировать код в буфер обмена
  1.                                 $orders[0] = array (
  2.                                 'orders_id' => 7676,
  3.                                 'product_id' => 123,
  4.                                 'name_product' => 'Super',
  5.                                 'quantity' => 2,
  6.                                 'price_product'  => 1000,
  7.                                 'code'  => 'f234234',
  8.                                 'lastname'  => 'hjkhjk',
  9.                                 'email'  => 'test@er.er',
  10.                                 'period'  => 3,
  11.                                 'name'  => 'teg'
  12.                                 );

(Добавление)
все всем спасибо
решил
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.                                 $orders[0]['orders_id'] = 9898;
  4.                                 $orders[0]['product_id'] = 5656;
  5.                                 $orders[0]['name_product'] = 'Super555';
  6.                                 $orders[0]['quantity'] = 1 ;
  7.                                 $orders[0]['price_product']  = 2000;
  8.                                 $orders[0]['code']  = 'f6556';
  9.                                 $orders[0]['lastname']  = 'sdfsdf';
  10.                                 $orders[0]['email']  = 'test1@er1.er';
  11.                                 $orders[0]['period']  = 2;
  12.                                 $orders[0]['name']  = 'tes';    //*/   
  13.  
  14.                                 $orders[1]['orders_id'] = 9832141298;
  15.                                 $orders[1]['product_id'] = 5213123656;
  16.                                 $orders[1]['name_product'] = 'Super444';
  17.                                 $orders[1]['quantity'] = 3 ;
  18.                                 $orders[1]['price_product']  = 4000;
  19.                                 $orders[1]['code']  = 'f6asdad556';
  20.                                 $orders[1]['lastname']  = 'sfvcvxcvdfsdf';
  21.                                 $orders[1]['email']  = 'tes11t1@er1.er';
  22.                                 $orders[1]['period']  = 3;
  23.                                 $orders[1]['name']  = 'tesss';                 
  24.                
  25.                                 $orders = array("orders"=> $orders);
  26.                        
  27.                                         //      var_dump($orders2);
  28. $res = $client->__soapCall("test",$orders);
  29. var_dump($res);
  30.  

(Добавление)
результат работы функции

object(stdClass)#2 (2) { ["greeting"]=> string(748) "Array ( [0] => Array ( [orders_id] => 9898 [product_id] => 5656 [name_product] => Super555 [quantity] => 1 [price_product] => 2000 [code] => f6556 [lastname] => sdfsdf [email] => test1@er1.er [period] => 2 [name] => tes ) [1] => Array ( [orders_id] => 2147483647 [product_id] => 2147483647 [name_product] => Super444 [quantity] => 3 [price_product] => 4000 [code] => f6asdad556 [lastname] => sfvcvxcvdfsdf [email] => tes11t1@er1.er [period] => 3 [name] => tesss ) ) " ["status"]=> bool(true) }

Страниц (7): « 1 2 3 4 5 6 [7]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB