Using XML-RPC with PHP - Dissection of a XML-RPC Call (
Page 3 of 7 )
An
XML-RPC call is sent from a client to a server via HTTP POST. This allows
XML-RPC applications to work fairly easily behind firewalls, as port 80 is
almost always open.
Here's a sample XML-RPC call:
POST xmlrpcexample.php HTTP/1.0
User-Agent: xmlrpc-epi-php/0.2 (PHP)
Host: localhost:80
Content-Type: text/xml
Content-length: 191
<?xml version='1.0' encoding="iso-8859-1" ?>
<methodCall>
<methodName>greeting</methodName>
<params>
<param>
<value>
<string>Lucas</string>
</value>
</param>
</params>
</methodCall>
The first part of the request is simply a standard HTML post
request. It's the data sent in the body of the request that interests
us.
The
<methodCall> tags simply encapsulate the call,
with all the parameters enclosed in
<params> and each
parameter enclosed in
<param>.
Parameters are
specified enclosed in tags that tell the application what type of parameter they
are. In this case, "Lucas" is a string, so it is enclosed in
<string>, but there are a lot more parameter types:
<i4> or <int> |
four-byte signed integer |
10 |
<boolean> |
0 (false) or 1 (true) |
1 |
<string> |
ASCII string |
Hello, DevShed! |
<double> |
double-precision signed
floating point number |
-21.2544 |
<dateTime.iso8601> |
date/time |
20011219T12:05:26 |
<base64> |
base64-encoded binary |
eW91IGNhbid0IHJlYWQgdGhpcyE=
|
In addition to
the basic types, there are also
<struct>s and
<array>s,
<struct>s containing any number
of
<member>s that consist of
<name>s and
<value>s (specified in the same manner as
<param>s):
<struct>
<member>
<name>name</name>
<value>
<string>Lucas Marshall</string>
</value>
</member>
<member>
<name>age</name>
<value>
<i4>20</i4>
</value>
</member>
</struct>
and arrays merely containing any number of
<value>s:
<array>
<value><i4>10</i4></value>
<value><i4>20</i4></value>
<value><i4>30</i4></value>
</array>