XML-RPC
Introduction
The client sends XML-encoded strings. The XML schema has the following form:
<?xml version="1.0"?>
<methodCall>
<methodName>trigger</methodName>
<params>
<param>
<value><string>votenet</string></value>
</param>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodCall>
A response from a method call, for example for retrieving a robot pose, could look something like this:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value><double>0.34</double></value>
<value><double>-0.56</double></value>
<value><double>1.23</double></value>
<value><double>57.6</double></value>
<value><double>-0.24</double></value>
<value><double>89.77</double></value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
A detailed description of the XML-RPC protocol can be found on Wikipedia. Notably, controllers by Universal Robotsoffer XML-RPC support out-of-the-box.
Client Implementation and Testing
A fully functional XML-RPC client implementation is included in the Python standard library and can be tested against our public cloud endpoint https://staging.api.gke.vathos.net/mocks/edge/xmlrpc:
import xmlrpc.client
rpc_client = xmlrpc.client.ServerProxy('https://staging.api.gke.vathos.net/mocks/edge/xmlrpc')
rpc_client.trigger_async('votenet', True)