XML-RPC: formato de solicitud

Las solicitudes XML-RPC son una combinación de contenido XML y encabezados HTTP. El contenido XML utiliza la estructura de tipificación de datos para pasar parámetros y contiene información adicional que identifica qué procedimiento se está llamando, mientras que los encabezados HTTP proporcionan un contenedor para pasar la solicitud a través de la Web.

Cada solicitud contiene un único documento XML, cuyo elemento raíz es un elemento methodCall . Cada elemento methodCall contiene un elemento methodName y un elemento params . El elemento methodName identifica el nombre del procedimiento a llamar, mientras que el elemento params contiene una lista de parámetros y sus valores. Cada elemento params incluye una lista de elementos param que a su vez contienen elementos de valor .

Por ejemplo, para pasar una solicitud a un método llamado circleArea , que toma un parámetro Double (para el radio), la solicitud XML-RPC se vería así:

<?xml version="1.0"?>
<methodCall>
   <methodName>circleArea</methodName>
      <params>
         <param>
            <value><double>2.41</double></value>
         </param>
      </params>
</methodCall>

Los encabezados HTTP para estas solicitudes reflejarán los remitentes y el contenido. La plantilla básica tiene el siguiente aspecto:

POST /target HTTP 1.0
User-Agent: Identifier
Host: host.making.request
Content-Type: text/xml
Content-Length: length of request in bytes

Por ejemplo, si el método circleArea estaba disponible desde un servidor XML-RPC que escucha en / xmlrpc , la solicitud podría tener este aspecto:

POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169

Ensamblada, la solicitud completa se vería así:

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>

Es una solicitud HTTP ordinaria, con una carga útil cuidadosamente construida.