Учебники

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