xmlrpc - makes an XML-RPC remote procedure call and
displays the response
xmlrpc url method parameters [-transport=transportname]
[-username=username -password=passwd]
[-curlinterface={interface|host}]
[-curlnoverifypeer]
[-curlnoverifyhost]
This program is used to execute Remote Procedure Calls (RPC) using
a XML-RPC client. Its main purpose is debugging and learning since RPC are
usually embedded in source code of other programs.
- url
- This is the URL of the XML-RPC server. As XML-RPC uses HTTP, this must be
an HTTP url. However, if you don't specify a type
("http:") in the URL, xmlrpc assumes an
"http://" prefix and a "/RPC2" suffix. RPC2 is the
conventional file name for an XML-RPC responder.
- method
- The name of the XML-RPC method you want to invoke.
- parameters
- List of parameters for the RPC. xmlrpc turns each of these
arguments into an XML-RPC parameter, in the order given. You may specify
no parameters if you like.
You specify the data type of the parameter with a prefix ending in
a slash. Example: i/5. Here, the "i" signifies an integer data
type. "5" is the value.
xmlrpc is capable of only a subset of the possible XML-RPC
types, as follows by prefix:
i/ integer (<i4>) (32 bit).
s/ string (<string>).
h/ byte string (<base64>). Specify the value in
hexadecimal.
b/ boolean (<boolean>). Specify the value as
"true" or "t" for true; "false" or
"f" for false.
d/ double (<double>) - i.e. real number.
n/ nil (<nil>).
I/ 64 bit integer (<i8>).
- -transport=transportname
- This selects the XML transport facility (e.g. libwww) that xmlrpc
uses to perform the RPC. The name transportname is one that the Xmlrpc-c
programming library recognizes. This is typically libwww, curl, and
wininet. By default, xmlrpc lets the Xmlrpc-c library choose.
-username=username
- -password=passwd
- These two options, which must be used together, cause the client to
authenticate itself to the server, if the server requires it, using HTTP
Basic Authentication and the specified username and password.
- -curlinterface={interface|host}
- This option gives the "interface" option for a Curl XML
transport. The exact meaning of this option is up to the Curl library, and
the best documentation for it is the manual for the 'curl' program that
comes with the Curl library. But essentially, it chooses the local network
interface through which to send the RPC. It causes the Curl library to
perform a "bind" operation on the socket it uses for the
communication. It can be the name of a network interface (e.g. on Linux,
"eth1") or an IP address of the interface or a host name that
resolves to the IP address of the interface. Unfortunately, you can't
explicitly state which form you're specifying, so there's some ambiguity.
Examples: -interface=eth1 -interface=64.171.19.66
-interface=giraffe.giraffe-data.com This option causes
xmlrpc to default to using the Curl XML transport. You may not
specify any other transport.
- -curlnoverifypeer
- This option gives the "no_ssl_verifypeer" option for the Curl
XML transport, which is essentially the CURLOPT_SSL_VERIFYPEER option of
the Curl library. See the curl_easy_setopt() man page for details
on this, but essentially it means that the client does not authenticate
the server's certificate of identity -- it just believes whatever the
server says. You may want to use -curlnoverifyhost as well. Since
you're not authenticating the server's identity, there's not much sense in
checking it. This option causes xmlrpc to default to using the Curl
XML transport. You may not specify any other transport.
- -curlnoverifyhost
- This option gives the "no_ssl_verifyhost" option for the Curl
XML transport, which is essentially the CURLOPT_SSL_VERIFYHOST option of
the Curl library. See the curl_easy_setopt() man page for details
on this, but essentially it means that the client does not verify the
server's identity. It just assumes that if the server answers the IP
address of the server as indicated by the URL (probably via host name),
then it's the intended server. You may want to use
-curlnoverifypeer as well. As long as you don't care who the server
says it is, there's no point in authenticating its identity. This option
causes xmlrpc to default to using the Curl XML transport. You may
not specify any other transport.
$ xmlrpc http://localhost:8080/RPC2 sample.add i/3 i/5
Result: Integer: 8
$ xmlrpc localhost:8080 sample.add i/3 i/5
Result: Integer: 8
$ xmlrpc http://xmlrpc.example.com/~bryanh echostring
"s/This is a string"
Result: String: This is a string
$ xmlrpc http://xmlrpc.example.com/~bryanh echostring
"This is a string in shortcut syntax"
Result: String: This is a string in shortcut syntax
$ xmlrpc http://xmlrpc.example.com sample.add i/3 i/5
-transport=curl -curlinterface=eth1 -username=bryanh
-password=passw0rd
Result: Integer: 8
If you run xmlrpc in an environment in which programs get
their arguments encoded some way other than UTF-8, xmlrpc will
generate garbage for the XML-RPC call and display garbage for the XML-RPC
response. Typically, you control this aspect of the environment with a LANG
environment variable. One safe value for LANG is "C".
curl(1), http://xmlrpc-c.sourceforge.net/doc,
http://xmlrpc.com
xmlrpc was written by Eric Kidd.
This manual page was written by Bryan Henderson and adapted for
Debian by Carlos Henrique Lima Melara.