123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
- <title>Xmlrpc User Manual</title>
- <body>
- <p><b>xmlrpc</b> makes an XML-RPC remote procedure call (RPC) and displays
- the response. <b>xmlrpc</b> runs an XML-RPC client.
- <p>This program is mainly useful for debugging and learning about
- XML-RPC servers. XML-RPC is such that the RPCs normally need to be made
- by a program rather than a person to be of use.
- <p>A similar tool done as a web form is at <a
- href="http://gggeek.damacom.it/debugger/">
- http://gggeek.damacom.it/debugger/</a>
- <h2>Examples</h2>
- <pre>
- <tt>
- $ xmlrpc http://localhost:8080/RPC2 sample.add i/3 i/5
- Result:
- Integer: 8
- </tt>
- </pre>
- <pre>
- <tt>
- $ xmlrpc localhost:8080 sample.add i/3 i/5
- Result:
- Integer: 8
-
- </tt>
- </pre>
- <pre>
- <tt>
- $ xmlrpc http://xmlrpc.example.com/~bryanh echostring \
- "s/This is a string"
- Result:
- String: This is a string
- </tt>
- </pre>
- <pre>
- <tt>
- $ xmlrpc http://xmlrpc.example.com/~bryanh echostring \
- "This is a string in shortcut syntax"
- Result:
- String: This is a string in shortcut syntax
- </tt>
- </pre>
- <pre>
- <tt>
- $ xmlrpc http://xmlrpc.example.com sample.add i/3 i/5 \
- transport=curl -curlinterface=eth1 -username=bryanh -password=passw0rd
- Result:
- Integer: 8
-
- </tt>
- </pre>
- <h2>Overview</h2>
- <p>
- <b>xmlrpc</b>
- <i>url</i>
- <i>methodName</i>
- <i>parameter</i> ...
- [<b>-transport=</b><i>transportname</i>]
- [<b>-username=</b><i>username</i> <b>-password=</b><i>password</i>]
- [<b>-curlinterface</b>={<i>interface</i>|<i>host</i>}]
- [<b>-curlnoverifypeer</b>]
- [<b>-curlnoverifyhost</b>]
- <p><i>parameter</i>:
- <p>
- <b>i/</b><i>integer</i> |
- <b>s/</b><i>string</i> |
- <b>h/</b><i>hexstring</i> |
- <b>b/</b>{<b>true</b>|<b>false</b>|<b>t</b>|<b>f</b>} |
- <b>d/</b><i>realnum</i> |
- <b>n/</b> |
- <b><i>string</i></b>
- <P>Minimum unique abbreviation of option is acceptable. You may use double
- hyphens instead of single hyphen to denote options. You may use white
- space in place of the equals sign to separate an option name from its value.
- <h2>Arguments</h2>
- <dl>
- <dt><i>url</i>
- <dd>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, <b>xmlrpc</b> assumes an "http://" prefix and a
- "/RPC2" suffix. <b>RPC2</b> is the conventional file name for
- an XML-RPC responder.
- <dt><i>methodName</i>
- <dd>The name of the XML-RPC method you want to invoke.
- <dt><i>parameter</i> ...
- <dd>The list of parameters for the RPC. <b>xmlrpc</b> turns each of these
- arguments into an XML-RPC parameter, in the order given. You may specify
- no parameters if you like.
- <p>You specify the data type of the parameter with a prefix ending in
- a slash. Example: <b>i/5</b>. Here, the "i" signifies an
- integer data type. "5" is the value.
- <p><b>xmlrpc</b> is capable of only a subset of the
- possible XML-RPC types, as follows by prefix:
- <dl>
- <dt>i/
- <dd>integer (<i4>) (32 bit)
- <dt>s/
- <dd>string (<string>)
- <dt>h/
- <dd>byte string (<base64>). Specify the value in hexadecimal.
- <dt>b/
- <dd>boolean (<boolean>). Specify the value as "true" or
- "t" for true; "false" or "f" for false.
- <dt>d/
- <dd>double (<double>) (i.e. real number)
- <dt>n/
- <dd>nil (<nil>)
- <dt>I/
- <dd>64 bit integer (<i8>)
- </dl>
- <p>As a shortcut, if you don't specify a prefix (i.e. your argument does
- not contain a slash), <b>xmlrpc</b> assumes string data type.
- </dl>
- <h2>Options</h2>
- <dl>
- <dt><b>-transport=</b><i>transportname</i>
- <dd>This selects the XML transport facility (e.g. libwww) that
- <b>xmlrpc</b> uses to perform the RPC.
- <p>The name <i>transportname</i> is one that the Xmlrpc-c programming
- library recognizes. This is typically <b>libwww</b>, <b>curl</b>, and
- <b>wininet</b>.
- <p>By default, <b>xmlrpc</b> lets the Xmlrpc-c library choose.
- <dt><b>-username=</b><i>username</i>
- <dt><b>-password=</b><i>password</i>
- <dd>These 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.
- <dt><b>-curlinterface</b>={<i>interface</i>|<i>host</i>}
- <dd>
- This option gives the "interface" option for a Curl XML transport.
- <p>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.
- <p>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.
- <p>Examples:
- <ul>
- <li>
- <kbd>
- -interface=eth1
- </kbd>
- <li>
- <kbd>
- -interface=64.171.19.66
- </kbd>
- <li>
- <kbd>
- -interface=giraffe.giraffe-data.com
- </kbd>
- </ul>
- <p>This option causes <b>xmlrpc</b> to default to using the Curl
- XML transport. You may not specify any other transport.
- <dt><b>-curlnoverifypeer</b>
- <dd>
- 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.
- <p>See the <b>curl_easy_setopt()</b> 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.
- <p>You may want to use <b>-curlnoverifyhost</b> as well. Since you're
- not authenticating the server's identity, there's not much sense in
- checking it.
- <p>This option causes <b>xmlrpc</b> to default to using the Curl
- XML transport. You may not specify any other transport.
- <dt><b>-curlnoverifyhost</b>
- <dd>
- 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.
- <p>See the <b>curl_easy_setopt()</b> 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.
- <p>You may want to use <b>-curlnoverifypeer</b> as well. As long as
- you don't care who the server says it is, there's no point in
- authenticating its identity.
- <p>This option causes <b>xmlrpc</b> to default to using the Curl
- XML transport. You may not specify any other transport.
- </dl>
- <h2>Limitations</h2>
- <p>If you run <b>xmlrpc</b> in an environment in which programs get
- their arguments encoded some way other than UTF-8, <b>xmlrpc</b>
- 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 <b>LANG</b> environment variable. One safe value
- for <b>LANG</b> is "C".
- </body>
|