Запросы 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-запрос с тщательно сконструированной полезной нагрузкой.