xmlrpc(1)
β¨ xmlrpc(1) β the manual page, but make it cute β¨
okay so bestie, welcome to the xmlrpc manual page π this one lives in the xmlrpc Manual section, and it's literally your group chat with an XML-RPC server. sit down, grab a boba, we're doing remote procedure calls π§
πΈ NAME πΈ
xmlrpc β makes an XML-RPC remote procedure call and displays the response
π SYNOPSIS π
xmlrpc url method parameters [-transport=transportname]
[-username=username -password=passwd]
[-curlinterface={interface|host}]
[-curlnoverifypeer]
[-curlnoverifyhost]
π DESCRIPTION π
so this program runs Remote Procedure Calls (RPC) using an XML-RPC client. its main character energy is debugging and learning, because normally RPCs are just... embedded deep in the source code of other programs π. here, you get to poke at them directly. iconic.
π¦ ARGUMENTS π¦
urlβ this is the URL of the XML-RPC server. XML-RPC rides on HTTP, so it's gotta be an HTTP url, no cap. but here's the slay: if you don't specify a type ("http:") in the URL,xmlrpcassumes an"http://"prefix and a"/RPC2"suffix.RPC2is the conventional file name for an XML-RPC responder. so thoughtful of it fr fr πmethodβ the name of the XML-RPC method you wanna invoke. that's it, that's the whole vibe.parametersβ a list of parameters for the RPC.xmlrpcturns each of these arguments into an XML-RPC parameter, in the order given. and yes, you may specify no parameters if you like β zero is a valid number of parameters, live your truth β¨
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, and "5" is the value. so slay.
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>).
note the difference bestie: lowercasei/is 32 bit integer, uppercaseI/is 64 bit. not me almost confusing them π
π₯ OPTIONS π₯
-transport=transportnameβ this selects the XML transport facility (e.g.libwww) thatxmlrpcuses to perform the RPC. the name transportname is one that the Xmlrpc-c programming library recognizes. this is typicallylibwww,curl, andwininet. by default,xmlrpclets the Xmlrpc-c library choose. no pressure, library, you got this π-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. duo goals, honestly π«Ά
-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. periodt.
-curlnoverifypeerβ this option gives the"no_ssl_verifypeer"option for the Curl XML transport, which is essentially theCURLOPT_SSL_VERIFYPEERoption of the Curl library. see thecurl_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-curlnoverifyhostas well. since you're not authenticating the server's identity, there's not much sense in checking it. this option causesxmlrpcto 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 theCURLOPT_SSL_VERIFYHOSToption of the Curl library. see thecurl_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-curlnoverifypeeras well. as long as you don't care who the server says it is, there's no point in authenticating its identity. this option causesxmlrpcto default to using the Curl XML transport. you may not specify any other transport.
β οΈ bestie, real talk:-curlnoverifypeerand-curlnoverifyhostboth mean you're not checking who the server is. that's a trust-the-void kind of move. use them knowingly π
π EXAMPLES π
$ 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
see that? 3 + 5 = 8 every single time. math is the one thing that never misses π
π LIMITATIONS π
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".
so if your output looks like cursed hieroglyphics, check yourLANG."C"is the safe bestie π
π SEE ALSO π
π AUTHOR π
xmlrpc was written by Eric Kidd.
this manual page was written by Bryan Henderson and adapted for Debian by Carlos Henrique Lima Melara.
and that's the whole thing, bestie. this page is from xmlrpc-1.33.14, dated 19 Jun 2020 β go forth and make your remote procedure calls, you absolute legend β¨π
π¦πΈ
π¦ where this page comes from
- debian bookworm: libxmlrpc-core-c3-dev 1.33.14-11
- debian trixie: libxmlrpc-core-c3-dev 1.59.03-10 Β· BSD-3-Clause
- ubuntu jammy: libxmlrpc-core-c3-dev 1.33.14-10
- ubuntu noble: libxmlrpc-core-c3-dev 1.33.14-12build2
- ubuntu questing: libxmlrpc-core-c3-dev 1.59.03-10.1
- ubuntu resolute: libxmlrpc-core-c3-dev 1.60.05-1 Β· BSD-3-Clause
- ubuntu stonking: libxmlrpc-core-c3-dev 1.60.05-1build1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms