r - 使用 RCurl POST 请求

标签 r rcurl

作为探索如何用 R 为丹佛 RUG 制作包的一种方式,我认为围绕 datasciencetoolkit API 编写 R 包装器将是一个有趣的小项目。正如您想象的那样,基本的 R 工具来自 RCurl 包。我被一个看似简单的问题困住了,我希望这个论坛中的某个人能够为我指明正确的方向。基本问题是,我似乎无法使用 postForm() 将未加密的字符串作为 curl 中数据选项的一部分传递,即 curl -d "string""address_to_api"。

例如,从命令行我可能会做

$ curl -d "Tim O'Reilly, Archbishop Huxley" "http://www.datasciencetoolkit.org/text2people"

成功。但是,似乎 postForm() 在将附加参数传递到 POST 请求时需要一个显式键。我已经查看了 datasciencetoolkit 代码和开发人员文档以寻找可能的 key ,但似乎找不到任何东西。

顺便说一句,通过 GET 请求将输入传递到 DSTK API 的其他部分非常简单。例如,
ip2coordinates <- function(ip) {
  api <- "http://www.datasciencetoolkit.org/ip2coordinates/"
  result <- getURL(paste(api, URLencode(ip), sep=""))
  names(result) <- "ip"
  return(result)
}
ip2coordinates('67.169.73.113')

将产生预期的结果。

需要明确的是,我已经阅读了 DTL 的 omegahat 站点上的 RCurl 文档、包含软件包的 RCurl 文档以及 curl 手册页。但是,我遗漏了一些与 curl 相关的基本内容(或者 postForm() 函数中的 .opts()),我似乎无法理解。

在 python 中,我基本上可以使用 httplib.HTTPConnection 发出“原始”POST 请求——在 R 中是否可用?我还查看了 httpRequest 包中的 simplePostToHost 函数,它似乎锁定了我的 R session (它似乎也需要一个 key )。

FWIW,我在 Mac 10.6.7 上使用 R 2.13.0。

任何帮助深表感谢。如果您有兴趣使用数据科学工具包,所有代码很快就会在 github 上可用。

干杯。

最佳答案

使用 httr,这只是:

library(httr)
r <- POST("http://www.datasciencetoolkit.org/text2people", 
  body = "Tim O'Reilly, Archbishop Huxley")
stop_for_status(r)
content(r, "parsed", "application/json")

关于r - 使用 RCurl POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797688/

相关文章:

r - 如何将 SOAP 请求 curl 转换为 RCurl

r - 如果 RCurl::getURL() 执行时间太长,如何停止执行?

r - 在 R Shiny 服务器上保存临时文件

r - 在格子 xyplot 上添加标签

r - 按组手动填充多个比例的geom_tile

r - 森林 : error in predict when newdata is one-row dataframe

r - 获取响应头

r - R 中使用 Twitter Streaming API 进行 Oauth(使用 RCurl)

r - 如何将 RCurl 和 curl 更新到主机上的版本?

regex - R - 使用正则表达式的子文本