These function causes the HTTP query, that has been specified
via the different options in this and other calls, to be sent and processed.
Unlike in curl itself,
for curlPerform one can specify all the options
in this call as an atomic invocation.
This avoids having to set the options and then perform
the action. Instead, this is all done in one call.
For curlMultiPerform, one must add the relevant
CURLHandle-class objects to the
MultiCURLHandle-class objects
before issuing the call to curlMultiPerform.
for curlPerform, this is the CURLHandle
object giving the structure for the
options and that will process the command.
For curlMultiPerform, this is an object of class
code MultiCURLHandle-class.
...
a named list of curl options to set after the handle has
been created.
.opts
a named list or CURLOptions object identifying the
curl options for the handle. This is merged with the values of ...
to create the actual options for the curl handle in the request.
multiple
a logical value. If TRUE and the internal call
to curl_multi_perform returns a value that indicates there is
still data available from one of the HTTP responses, we call
curl_multi_perform repeatedly until there is no more data
available at that time. If this is FALSE, we call
curl_multi_perform once and return, regardless of whether
there is more data available. This is convenient if we want to limit
the time spent in the call to curlMultiPerform.
.encoding
an integer or a string that explicitly identifies the
encoding of the content that is returned by the HTTP server in its
response to our query. The possible strings are
‘UTF-8’ or ‘ISO-8859-1’
and the integers should be specified symbolically
as CE_UTF8 and CE_LATIN1.
Note that, by default, the package attempts to process the header of
the HTTP response to determine the encoding. This argument is used
when such information is erroneous and the caller knows the correct
encoding.
Note that the encoding argument is not a regular libcurl option and
is handled specially by RCurl. But as a result, it is not unset
in subsequent uses of the curl handle (curl).
Value
A integer value indicating the status of the request.
This should be 0 as other errors will generate
errors.
if(url.exists("http://www.omegahat.net/RCurl")) {
h = basicTextGatherer()
curlPerform(url = "http://www.omegahat.net/RCurl", writefunction = h$update)
# Now read the text that was cumulated during the query response.
h$value()
}
if(url.exists("http://services.soaplite.com/hibye.cgi")) {
# SOAP request
body = '<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
<SOAP-ENV:Body>
<namesp1:hi xmlns:namesp1="http://www.soaplite.com/Demo"/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>\n'
h$reset()
curlPerform(url = "http://services.soaplite.com/hibye.cgi",
httpheader=c(Accept="text/xml", Accept="multipart/*",
SOAPAction='"http://www.soaplite.com/Demo#hi"',
'Content-Type' = "text/xml; charset=utf-8"),
postfields=body,
writefunction = h$update,
verbose = TRUE
)
body = h$value()
}
# Using a C routine as the reader of the body of the response.
if(url.exists("http://www.omegahat.net/RCurl/index.html")) {
routine = getNativeSymbolInfo("R_internalWriteTest", PACKAGE = "RCurl")$address
curlPerform(URL = "http://www.omegahat.net/RCurl/index.html",
writefunction = routine)
}
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(RCurl)
Loading required package: bitops
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/RCurl/curlPerform.Rd_%03d_medium.png", width=480, height=480)
> ### Name: curlPerform
> ### Title: Perform the HTTP query
> ### Aliases: curlPerform curlMultiPerform
> ### Keywords: IO
>
> ### ** Examples
>
> if(url.exists("http://www.omegahat.net/RCurl")) {
+ h = basicTextGatherer()
+ curlPerform(url = "http://www.omegahat.net/RCurl", writefunction = h$update)
+ # Now read the text that was cumulated during the query response.
+ h$value()
+ }
[1] "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>301 Moved Permanently</title>\n</head><body>\n<h1>Moved Permanently</h1>\n<p>The document has moved <a href="http://www.omegahat.net/RCurl/">here</a>.</p>\n</body></html>\n"
>
>
> if(url.exists("http://services.soaplite.com/hibye.cgi")) {
+ # SOAP request
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:xsd="http://www.w3.org/1999/XMLSchema"
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
+ <SOAP-ENV:Body>
+ <namesp1:hi xmlns:namesp1="http://www.soaplite.com/Demo"/>
+ </SOAP-ENV:Body>
+ </SOAP-ENV:Envelope>\n'
+
+
+ h$reset()
+ curlPerform(url = "http://services.soaplite.com/hibye.cgi",
+ httpheader=c(Accept="text/xml", Accept="multipart/*",
+ SOAPAction='"http://www.soaplite.com/Demo#hi"',
+ 'Content-Type' = "text/xml; charset=utf-8"),
+ postfields=body,
+ writefunction = h$update,
+ verbose = TRUE
+ )
+
+ body = h$value()
+
+ }
>
>
> # Using a C routine as the reader of the body of the response.
> if(url.exists("http://www.omegahat.net/RCurl/index.html")) {
+ routine = getNativeSymbolInfo("R_internalWriteTest", PACKAGE = "RCurl")$address
+ curlPerform(URL = "http://www.omegahat.net/RCurl/index.html",
+ writefunction = routine)
+ }
<R_internalWrite> size = 1, nmemb = 4284
OK
0
>
>
>
>
>
> dev.off()
null device
1
>