RCurl getForm传递http标头

时间:2013-11-18 15:17:52

标签: r http curl get rcurl

使用RCurl的getForm函数,这是传递GET参数的唯一好方法,我需要改变一些http头。在getURI中,您只需传递httpheader = c(Whatever='whatever',...)即可。不幸的是,getForm似乎忽略了这一论点。

如何在getForm请求中设置http标头?

1 个答案:

答案 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而不是任何包装函数(如getFormgetURL),因为这样您将始终使用一致的语法。