Invoke XML-RPC method from R

Description

This function can be used to invoke a method provided by an XML-RPC (remote procedure call) server. It can pass R objects in the request by serializing them to XML format and also converts the result back to R.

Usage

1
2
3
xml.rpc(url, method, ..., .args = list(...), .opts = list(),
         .defaultOpts = list(httpheader = c("Content-Type" = "text/xml")),
         .convert = TRUE, .curl = getCurlHandle())

Arguments

url

the URL of the XML-RPC server

method

a string giving the name of the XML-RPC method to invoke

...

a collection of argument valuesn

.args

an alternative way to specify the collection (list) of arguments

.opts

a list of options passed on to postForm. This is for the caller to specify server-specific curl options as opposed to general XML-RPC options which are set via .defaultOpts.

.defaultOpts

standard/default RCurl options used when making this call

.convert

either a logical value indicating whether to perform the defalt conversion (via convertToR) or not, or alternatively a function which is called with a string giving the body of the HTTP response of the XML-RPC call.

.curl

a CURLHandle object that the caller can specify to allow reusing existing handles and connections. This can greatly improve efficiency.

Value

If .convert is a logical value and TRUE, an R object giving the result of the XML-RPC method invocation. If .convert is FALSE, a string giving the body of the response.

If .convert is a function, it is called with the body of the XML-RPC response as a string.

Author(s)

Duncan Temple Lang

References

http://www.xmlrpc.com/spec http://www.cafeconleche.org/books/xmljava/chapters/ch02s05.html for a DTD for XML-RPC and examples and discussion.

See Also

postForm getURL and REST Web services SSOAP package.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 # See http://www.advogato.org/xmlrpc.html

xml.rpc('http://www.advogato.org/XMLRPC', 'test.square', 9L)
xml.rpc('http://www.advogato.org/XMLRPC', 'test.sumprod', 9L, 10L)
xml.rpc('http://www.advogato.org/XMLRPC', 'test.strlen', 'abcdef')
xml.rpc('http://www.advogato.org/XMLRPC', 'test.capitalize', 'abcdef')

xml.rpc('http://www.advogato.org/XMLRPC', 'user.exists', 'duncan')
xml.rpc('http://www.advogato.org/XMLRPC', 'cert.get', 'duncan')

xml.rpc('http://www.advogato.org/XMLRPC', 'diary.len', 'duncan')
xml.rpc('http://www.advogato.org/XMLRPC', 'diary.get', 'duncan', 1L)
xml.rpc('http://www.advogato.org/XMLRPC', 'diary.getDates', 'duncan', 4L)


xml.rpc("http://xmlrpc-c.sourceforge.net/api/sample.php", "sample.sumAndDifference", 3L, 4L)

# Doesn't work
#  xml.rpc('http://ws2.webservices.nl', 'system.methodHelp', 'addressReeksPostcodeSearch')

# xml.rpc('http://www.cookcomputing.com/xmlrpcsamples/RPC2.ashx', 'example.getStateName', 2L)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.