Пишем XML-RPC сервер

Интернет — 20 апреля, 2008 13:30 — Комментариев: 2

Теги: ,


В продолжение этого поста расскажу как написать собственный XML-RPC сервер, который может выполнять определенный набор функций. Для создания сервера будем использовать все ту же библиотеку The Incutio XML-RPC Library for PHP

Поехали!

Итак, для начала надо определиться какие функции будет выполнять наш сервер. Для примера возьмем Начинающий водитель. Сделаем возможность получать информацию об автошколах. Для этого нам нужны 3 функции:

  1. schools.getRegions - возвращает список регионов
  2. schools.getSchools - возвращает список автошкол
  3. schools.getResponds - возвращает список отзывов

Таким образов, к примеру XML-RPC запрос на список регионов будет выглядеть так:

1 2 3 4 5 6 7
<?xml version='1.0'?>
<methodCall>
	<methodName>school.getRegions</methodName>
	<params>
		<param></param>
	</params>
</methodCall>

Запрос автошкол (с параметрами):

1 2 3 4 5 6 7 8 9
<?xml version='1.0'?>
<methodCall>
	<methodName>schools.getSchools</methodName>
	<params>
		<param>
			<value><int>43</int></value>
		</param>
	</params>
</methodCall>

В общем думаю понятно.

И так. Сервер. Все очень просто:

1 2 3 4 5 6 7 8 9
require('IXR_Library.inc.php');
 
$server = new IXR_Server(
	array(
		'schools.getRegions'    => 'getRegions',
		'schools.getSchools'    => 'getSchools',
		'schools.getResponds' => 'getResponds',
	)
);

Сервер готов, осталось определить функции:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
function getRegions($args) {
	// Получаем данные из БД
 
	return /* массив с данными*/;
}
 
 
function getSchools($args) {
	// Получаем данные из БД
 
	return /* массив с данными*/;
}
 
 
function getResponds($args) {
	// Получаем данные из БД
 
	return /* массив с данными*/;
}

Все параметры, которые пришли в XML-RPC запросе будут в массиве $args.

Ответ сервера будет примерно таким

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
      <value>
		<array>
			<data>
				<value>
					<struct>
					  <member><name>id</name><value><string>1195</string></value></member>
					  <member><name>name</name><value><string>Автошкола &quot;Авто-Дело&quot;</string></value></member>
					  <member><name>cnt</name><value><string>0</string></value></member>
					  <member><name>rating</name><value><string>0</string></value></member>
					</struct>
				</value>
                ...
				<value>
					<struct>
					  <member><name>id</name><value><string>1191</string></value></member>
					  <member><name>name</name><value><string>Автошкола &quot;Авто-курс&quot;</string></value></member>
					  <member><name>cnt</name><value><string>1</string></value></member>
					  <member><name>rating</name><value><string>4.66666667</string></value></member>
					</struct>
				</value>
			</data>
        </array>
    </param>
  </params>
</methodResponse>

Вот и все!




Комментариев: 2

Вы можете следить за комментариями через RSS-ленту. Вы можете оставить комментарий, или trackback с вашего сайта.

  1. Alexey
    20 Апр 2008 в 21:41 — Ответить

    Пишу к этому серверу клиента:)
    Потом в своем блоге поделюсь как написать XML-RPC Client-a:)

  2. Константин Лихачев - Используем XML-RPC для работы с SAPE и пара слов про cookie
    4 мая 2008 в 22:32

    [...] Кто-то знает что такое XML-RPC (кто не знает, прошу сюда и сюда). И лишь немногие знают, что с Сапой можно работать [...]


Оставить комментарий


   
Add to Technorati Favorites
Читать в Яндекс.Ленте
Получать RSS-ленту на почту

Топ комментаторов

Интернет - августа 12, 2008 13:44 - Комментариев: 8

Про MySQL

Еще в рубрике Интернет


Рукоприкладство - июля 11, 2008 20:59 - Нет комментариев

Сдали: VEGA

Еще в рубрике Рукоприкладство


МайЛайф - августа 2, 2008 21:49 - Нет комментариев

День рождения ПБК

Еще в рубрике МайЛайф