Пишем XML-RPC сервер
Интернет — 20 апреля, 2008 13:30 — Комментариев: 2
Теги: php, XML-RPC
В продолжение этого поста расскажу как написать собственный XML-RPC сервер, который может выполнять определенный набор функций. Для создания сервера будем использовать все ту же библиотеку The Incutio XML-RPC Library for PHP
Поехали!
Итак, для начала надо определиться какие функции будет выполнять наш сервер. Для примера возьмем Начинающий водитель. Сделаем возможность получать информацию об автошколах. Для этого нам нужны 3 функции:
- schools.getRegions - возвращает список регионов
- schools.getSchools - возвращает список автошкол
- 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>Автошкола "Авто-Дело"</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>Автошкола "Авто-курс"</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
-
20 Апр 2008 в 21:41 — Ответить -
4 мая 2008 в 22:32[...] Кто-то знает что такое XML-RPC (кто не знает, прошу сюда и сюда). И лишь немногие знают, что с Сапой можно работать [...]
Оставить комментарий
Поиск
Топ комментаторов
6
4
2
1
1
Новые комментарии
- → Ага, ушел.... 16
- → Выдает в каком месте? Файл spellchecker\rpc.php, который собственно проверяет... 12
- → Да!... 8
- → Я в своих скриптах очень редко использую @. Просто наткнулся на данный факт р... 7
- → Вообще говоря, игры с "собаками" - весьма опасное занятие. Странен сам факт подо... 7
- → Рыба живет в доме Немца.... 8
- → Видать совсем глубоко в разработку ушел, давно нет постов... :)... 16
Свежие записи
Друзья
Интернет - августа 12, 2008 13:44 - Комментариев: 8
Про MySQL
Еще в рубрике Интернет
- Как заработать денег на блоге?
- Обработка ошибок в PHP и исключения
- Начинаю разработку…
- @$_GET['something']
- PR вырос - апдейт Google PR
Рукоприкладство - июля 11, 2008 20:59 - Нет комментариев
Сдали: VEGA
Еще в рубрике Рукоприкладство
- Сдали: Пресс-база Volkswagen
- Сдали: Кировская Городская дума
- Сдали: Маркетинговая база Volkswagen
- Сдали: Кировский молочный комбинат
МайЛайф - августа 2, 2008 21:49 - Нет комментариев
День рождения ПБК
Еще в рубрике МайЛайф
- Прочитал: Сергей Лукьяненко - “Конкуренты”
- Задачка от Эйнштейна
- Про Роберта Кийосаки, крысиные бега и матрешек
- Мой блоггерский рабочий стол
- Я - свободен! Но это временно…






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