使用RCurl的getForm
函数,这是传递GET参数的唯一好方法,我需要改变一些http头。在getURI中,您只需传递httpheader = c(Whatever='whatever',...)
即可。不幸的是,getForm
似乎忽略了这一论点。
如何在getForm请求中设置http标头?
答案 0 :(得分:4)
欢迎来到 RCurl 这个令人困惑的世界!你发现它的语法没有意义,这不是你的错。
在getForm
中,您将标头作为第二个参数(...
)传递。请参阅? getForm
的用法部分:
getForm(uri, ..., .params = character(), .opts = list(), curl = getCurlHandle(),
.encoding = integer(), binary = NA, .checkParams = TRUE)
参数部分说:
...参数的名称 - 值对。请注意,这些不是CURL选项。
相比之下,另一个主力函数getURL
说:
getURL(url, ..., .opts = list(),
write = basicTextGatherer(.mapUnicode = .mapUnicode),
curl = getCurlHandle(), async = length(url) > 1,
.encoding = integer(), .mapUnicode = TRUE)
...被解释为管理HTTP请求的CURL选项的命名值。
因此,在使用getForm
时,您只需将标题作为列表传递,但在使用getURL
时,您需要在httpheader
参数中指定它们。
因此,我的一般建议是始终使用curlPerform
而不是任何包装函数(如getForm
或getURL
),因为这样您将始终使用一致的语法。