XML-RPC - формат запроса
Запросы XML-RPC представляют собой комбинацию содержимого XML и заголовков HTTP. XML-контент использует структуру типизации данных для передачи параметров и содержит дополнительную информацию, определяющую вызываемую процедуру, в то время как заголовки HTTP предоставляют оболочку для передачи запроса через Интернет.
Каждый запрос содержит один XML-документ, корневым элементом которого является элемент methodCall . Каждый элемент methodCall содержит элемент methodName и элемент params . Элемент methodName определяет имя вызываемой процедуры, а элемент params содержит список параметров и их значений. Каждый элемент params включает в себя список элементов param, которые, в свою очередь, содержат элементы значения .
Например, чтобы передать запрос методу под названием circleArea , который принимает параметр Double (для радиуса), запрос XML-RPC будет выглядеть так:
<?xml version="1.0"?>
<methodCall>
<methodName>circleArea</methodName>
<params>
<param>
<value><double>2.41</double></value>
</param>
</params>
</methodCall>
Заголовки HTTP для этих запросов будут отражать отправителей и содержимое. Базовый шаблон выглядит следующим образом:
POST /target HTTP 1.0
User-Agent: Identifier
Host: host.making.request
Content-Type: text/xml
Content-Length: length of request in bytes
Например, если метод circleArea был доступен с сервера XML-RPC, прослушивающего / xmlrpc , запрос мог бы выглядеть так:
POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169
В собранном виде запрос будет выглядеть так:
POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169
<?xml version="1.0"?>
<methodCall>
<methodName>circleArea</methodName>
<params>
<param>
<value><double>2.41</double></value>
</param>
</params>
</methodCall>
Это обычный HTTP-запрос с тщательно продуманной полезной нагрузкой.