Ответов: 0 Просмотров: 513
|
доброго времени суток всем
по работе пришлось столкнутся с SOAP
в общем сама проблема
сторона server
PHP:
скопировать код в буфер обмена
<?PHP // Подключаем код NuSOAP require_once('nusoap.php'); // Создаем экщемпляр сервиса $server = new soap_server(); // Инициализируем поддержку WSDL $server->configureWSDL('testserver', 'urn:testserver'); // Устанавливаем пространство имен с префиксом tns для WSDL-схемы $server->wsdl->schemaTargetNamespace = 'urn:testserver'; // Регистрируем используемые сервисом структуы данных $server->wsdl->addComplexType( 'Order', 'complexType', 'struct', 'sequence', '', 'orders_id' => array('name' => 'orders_id', 'type' => 'xsd:int'), 'product_id' => array('name' => 'product_id', 'type' => 'xsd:int'), 'name_product' => array('name' => 'name_product', 'type' => 'xsd:string'), 'quantity' => array('name' => 'quantity', 'type' => 'xsd:int'), 'price_product' => array('name' => 'price_product', 'type' => 'xsd:int'), 'code' => array('name' => 'code', 'type' => 'xsd:string'), 'lastname' => array('name' => 'lastname', 'type' => 'xsd:string'), 'email' => array('name' => 'email', 'type' => 'xsd:string'), 'period' => array('name' => 'period', 'type' => 'xsd:int'), 'name' => array('name' => 'name', 'type' => 'xsd:string') ) ); $server->wsdl->addComplexType( 'TestOrder', 'complexType', 'array', '', 'SOAP-ENC:Array', 'Order' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Order[]') ), 'tns:Order' ); $server->wsdl->addComplexType( 'Status', 'complexType', 'struct', 'all', '', 'greeting' => array('name' => 'greeting', 'type' => 'xsd:string'), 'status' => array('name' => 'status', 'type' => 'xsd:boolean') ) ); $server->register('test', // название метода array('orders' => 'tns:TestOrder'), // входные параметры array('return' => 'tns:Status'), // выходные параметры 'urn:testserver', // пространство имен 'urn:testserver#test', // soapaction 'rpc', // стиль 'encoded', // использование 'Greet a person entering the sweepstakes' // документация ); function test($orders) { /* $greeting = $orders[0]['orders_id'] . '' . $orders[0]['name_product'] . '' . $orders[0]['quantity'] . ''; **/ // $winner = $orders['firstname'] == 'Scott'; $winner = true; 'greeting' => $xx , 'status' => $winner ); } // Используем HTTP-запрос чтобы вызвать сервис $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?>
client
PHP:
скопировать код в буфер обмена
<?PHP $client = new SoapClient('http://..................ru/SOAP/testserver.php?wsdl'); 'orders_id' => 7676, 'product_id' => 123, 'name_product' => 'Super', 'quantity' => 2, 'price_product' => 1000, 'code' => 'f234234', 'lastname' => 'hjkhjk', 'email' => 'test@er.er', 'period' => 3, 'name' => 'teg' ); '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' ); $res = $client->__soapCall("test",$orders); ?>
вся проблема не получается сформировать многомерный массив для передачи в функцию test те передается только
PHP:
скопировать код в буфер обмена
'orders_id' => 7676, 'product_id' => 123, 'name_product' => 'Super', 'quantity' => 2, 'price_product' => 1000, 'code' => 'f234234', 'lastname' => 'hjkhjk', 'email' => 'test@er.er', 'period' => 3, 'name' => 'teg' );
(Добавление)
все всем спасибо
решил
PHP:
скопировать код в буфер обмена
$orders[0]['orders_id'] = 9898; $orders[0]['product_id'] = 5656; $orders[0]['name_product'] = 'Super555'; $orders[0]['quantity'] = 1 ; $orders[0]['price_product'] = 2000; $orders[0]['code'] = 'f6556'; $orders[0]['lastname'] = 'sdfsdf'; $orders[0]['email'] = 'test1@er1.er'; $orders[0]['period'] = 2; $orders[0]['name'] = 'tes'; //*/ $orders[1]['orders_id'] = 9832141298; $orders[1]['product_id'] = 5213123656; $orders[1]['name_product'] = 'Super444'; $orders[1]['quantity'] = 3 ; $orders[1]['price_product'] = 4000; $orders[1]['code'] = 'f6asdad556'; $orders[1]['lastname'] = 'sfvcvxcvdfsdf'; $orders[1]['email'] = 'tes11t1@er1.er'; $orders[1]['period'] = 3; $orders[1]['name'] = 'tesss'; $orders = array("orders"=> $orders); // var_dump($orders2); $res = $client->__soapCall("test",$orders);
(Добавление)
результат работы функции
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) } |