Самопальный сервис eto'o Хакер, номер #083, стр. 083-124-3 Запрос в XML-RPC состоит из двух частей: метода и блока параметров. Каждому методу можно поставить в условное соответствие некоторую функцию, определенную на твоем языке программирования. Понятно, что параметры - это передаваемые нашим функциям переменные. Параметры могут быть разнотипые по своей природу: строки, целые числа, массивы - поддерживаются основные структуры данных. Помимо этого в XML-RPC присутствуют дополнительные тэги для обработки ошибок, но я об этом рассказывать не буду. Если это и впрямь тебе интересно, стоит обратиться к документации на нашем диске. Весь процесс взаимодействия при помощи XML-RPC между клиентом и сервером начинается с клиентского запроса. Запрос всегда содержит название метода, и, возможно, набор необходимых параметров. Серверная часть анализирует запрос, выполняет необходимые действия и возвращает клиенту ответ, состоящий из набора интересующих данных. По существу такое общение мало отличается от локального вызова процедур. Все тоже самое: определяется имя функции, фиксируется набор параметров, получается результат работы. Чтобы не быть голословным, рассмотрю конкретный пример XML-RPC-запроса для сервера: [пример запроса] POST /xmlrpc.php HTTP/1.1 User-Agent: Cool XML-RPC Client v X.X Host: cool.xml.rpc.service.com Content-type: text/xml <?xml version="1.0"?> <methodCall> <methodName>getNumberBots</methodName> <params> <param><value><int>43</int></value></param> </params> </methodCall> Ответ web-сервиса выглядит примерно следующим образом: [ответ web-сервиса] HTTP/1.1 200 OK Date: Mon, 10 Oct 2005 19:36:56 GMT Server: Apache/1.3.29 (Unix) X-Powered-By: PHP/5.0.1 Content-Length: 138 Connection: close Content-Type: text/xml; charset=UTF-8 <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value><int>16</int></value> </param> </params> </methodResponse> Думаю, на этом можно завершить рассказ о самом протоколе XML-RPC. Ты получил примерное представление о нем, и этого достаточно для дальнейшего понимания статьи. Тем более, что всю работу по составлению, парсингу запросов и ответов, берут на себя различные расширения, которые можно найти почти для любого языка программирования. Они поставляются в самых разнообразных вариантах - в виде dll, PHP-классов и модулей, для установки которых нужно пересобирать интерпретатор твоего языка. Мы для простоты и удобства будем использовать в наших разработках PHP. В качестве реализации XML-RPC я выбрал пакет, поставляемый через PEAR: http://pear.php.net/package/XML_RPC. Это быстро и удобно. Если тебе интересно узнать об альтернативных пакетах, то почитать об этом можно в соответствующей врезке. [свой сервис] Сейчас настало время написать свой собственный web-сервис. Давай с тобой наколбасим для начала элементарный сервис с одним-единственным методом. Что-нибудь учебное. Пусть, скажем, наш сервис получает единственный параметр - дату и возвращает в ответ число зарегистрированных в этот день ботов, осуществляя соответствующий запрос с базе данных. |