Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > Проблема при использовании XMLRPC


Автор: nastya1992 2.4.2012, 21:02
здравствуйте, у меня проблема следующего характера: 
есть клиент(содержит интерфейс) и сервер(выполняет обработку)
данные передаются от клиента серверу и обратно через XML (клиент
передает данные серверу, сервер выводит данные и кидает их обратно
клиенту, который выводит результат)

необходимо, используя XML RPC на php, написать взаимодействие клиента и сервера

при выполнении и клиент и сервер выдают ошибки - ругаются на функции,
что они не существуют
клиент на xmlrpc_encode_request, а сервер на xmlrpc_server_register_method.

пример кода:

Сервер:
Код

<?php

/*
Функция-обработчик получаемых данных. $method_name - имя вызываемого
метода, $params - параметры, $user_data - пользовательские данные.
*/
function local($method_name, $params, $user_data)
{
/*возвращаем сериализованные входящие данные*/
       return serialize($params);
}

/*создаем сервер*/
$s = xmlrpc_server_create();

/*регистрируем метод-обработчик*/
xmlrpc_server_register_method($s, 'external', 'local');

/*вызываем обработчик, передаем ему входящие данные, если обработчик
возвращает что-то - выводим на экран*/
if ($data = xmlrpc_server_call_method($s, $HTTP_RAW_POST_DATA, null))
       echo $data;

/*уничтожаем сервер*/
xmlrpc_server_destroy($s);

?>


Клиент:
Код

<?php

/*кодируем данные и имя метода для передачи серверу*/
$request = xmlrpc_encode_request('external', array(1, 2, 3));

/*создаем контекст для передачи данных серверу*/
$context = stream_context_create(array('http' => array(
   'method' => "POST",
   'header' => "Content-Type: text/xml",
   'content' => $request
)));

/*передаем запрос серверу и получаем ответ*/
$file = file_get_contents("http://адрес_сайта/скрипт_сервер.php",
false, $context);

/*декодируем ответ*/
$response = xmlrpc_decode($file);

/*если ошибка - выводим ее, иначе - выводим ответ сервера*/
if (xmlrpc_is_fault($response)) {
   trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
} else {
   print_r(unserialize($response));
}

?>



заранее спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)