Сервак
| Код | <? // Подключаем код NuSOAP require_once('../inc/nusoap.php'); // includes include "../inc/db/database.php"; include "../inc/db/mysql.php"; include "../main.cfg"; include "../inc/session.php"; include "../inc/utils.php"; // Создаем экземпляр сервера $server = new soap_server(); // Инициализируем поддержку WSDL $server->configureWSDL('authwsdl', 'urn:authwsdl'); // Устанавливаем пространство имен с префиксом tns для WSDL-схемы $server->wsdl->schemaTargetNamespace = 'urn:authwsdl'; // Регистрируем предоставляемый метод $server->register('auth'/*, // название метода
array('params' => 'xsd:struct'), // входные параметры array('return' => 'xsd:struct'), // выходные параметры 'urn:authwsdl', // пространство имен 'urn:authwsdl#auth', // soapaction 'rpc', // стиль 'encoded', // использование 'Authorize the user' // описание */ ); // Определяем метод как функцию PHP function auth($params) { /* $sess=new ivy_session(); // $auth_res=md5auth($params['login'],$params['md5password'],&$_GLOBALS['db'],&$sess); $auth_res=auth($params['login'],$params['md5password'],&$_GLOSBALS['db'],&$sess); if(!$auth_res) { // Authorization sucessfull $retval['errcode']=0; $retval['login']=$_REQUEST['login']; $retval['user_id']=$sess->DATA['user_id']; $retval['status']=$sess->DATA['status']; } else { $retval['errcode']=$auth_res; } $sess->update(); */ $retval=Array('name'=>$params['login'],'age'=>22); return new soapval('return', 'Info', $retval, false, 'urn:MyURN'); //return 'Hello, ' . $name; } // Используем HTTP-запрос чтобы вызвать сервис $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?> |
Клиент
| Код | <?php // Подключаем код NuSOAP require_once('../inc/nusoap.php'); // Создаем экземпляр клиента $client = new soapclient('http://dairy/xml/auth.php'); // Проверяем, возникла ли ошибка $err = $client->getError(); if ($err) { // Отображаем ошибку echo '<p><b>Ошибка в конструкторе: ' . $err . '</b></p>'; // Здесь мы уже знаем, что все последующие вызовы закончатся неудачно } // Вызываем SOAP-метод $user = Array('login' => '1datr', 'md5password' => 'beowulf_21_x'); //$user = Array(new soapval('A_STRING', 'login', '1datr'), new soapval('A_STRING', 'md5password', 'beowulf_21_x')); /* $result = $client->call( 'auth', // название метода array('params' => new soapval('params', 'Params', $user, false, 'urn:MyURN')) // входные параметры ); */ $result = $client->call('auth',Array('params'=>$user)); // Проверяем, возник ли сбой if ($client->fault) { echo '<p><b>Сбой: '; print_r($result); echo '</b></p>'; } else { // Проверяем, возникла ли ошибка $err = $client->getError(); if ($err) { // Отображаем ошибку echo '<p><b>Ошибка: ' . $err . '</b></p>'; } else { // Отображаем результат print_r($result); } }
?> |
Клиент выдает:
| Код | Ошибка: Response not of type text/xml: text/html; charset=windows-1251 |
|