作为探索如何在R for Denver RUG中创建一个包的一种方法,我决定在datasciencetoolkit API上编写一个R包装器将是一个有趣的小项目。基本的R工具来自RCurl包,正如你可能想象的那样。我被困在一个看似简单的问题上,我希望这个论坛上的某个人能够指引我朝着正确的方向发展。基本的问题是,我似乎无法使用postForm()传递一个未键控的字符串作为curl中数据选项的一部分,即curl -d“string”“address_to_api”。使用RCurl的POST请求
例如,在命令行中我可能会做
$ curl -d "Tim O'Reilly, Archbishop Huxley" "http://www.datasciencetoolkit.org/text2people"
成功。但是,postForm()在将其他参数传递到POST请求时需要显式键。我已经通过datasciencetoolkit代码和开发人员文档查找了可能的密钥,但似乎无法找到任何内容。
顺便说一句,通过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(或postForm()函数中的.opts())的基本概念,我似乎无法得到它。
在python中,我基本上可以使用httplib.HTTPConnection创建'原始'POST请求 - 类似于R中可用的那样?我也查看了httpRequest包中的simplePostToHost函数,它似乎锁定了我的R会话(它似乎也需要一个密钥)。
FWIW,我在Mac 10.6.7上使用R 2.13.0。
任何帮助,非常感谢。如果您有兴趣使用数据科学工具包,所有代码即将在github上提供。
干杯。
感谢您的帮助!有没有任何理由,关键是'一个'?我尝试了'名称','文本'和一堆其他垃圾。 – rtelmore 2011-04-27 02:24:22
更正:我尝试在不同的调用中使用“名称”等。我尝试过使用,例如postForm(api,string),你需要postForm(api,a = string)。 – rtelmore 2011-04-27 04:43:56
对,你需要提供一个key = value对。 'a'完全是任意的(这只是想到的第一个字母)。其他任何工作都一样(例如a =“string”,name =“string”等。“a”=“string”将不起作用。) – Noah 2011-04-27 09:19:19