这个curl请求的R等价物是什么

这个curl请求的R等价物是什么,r,curl,rcurl,httr,R,Curl,Rcurl,Httr,我在curl中有一个这样的请求 curl -H "Content-Type:application/json" \ -X GET 127.0.0.1:8084/clusterpredict/byheaders \ -v \ -b "text1" \ -A "text2" 如

我在
curl
中有一个这样的请求

curl -H "Content-Type:application/json"             \
     -X GET 127.0.0.1:8084/clusterpredict/byheaders \
     -v                                             \
     -b "text1"                                     \
     -A "text2"
如何在R中的
RCurl
httr
库中执行相同的操作?

httr
中:

  • -A
    /
    --user-agent
    转换为
    user\u-agent()
  • -b
    /
    --cookie
    转换为
    set_cookies()
    ,但您需要读取cookie文件并在调用它时设置它们(
    RCurl
    具有读取存储cookie文件的结构)。我之所以做这个假设,是因为您没有在
    -b
    之后使用
    “COOKIE1=1;COOKIE2=b”
    格式。您也可以在
    set\u cookies()
    中单独设置它们
  • -H
    /
    --header
    转换为
    add_headers()
    ,但有一些用于设置内容类型的特殊功能(见下文)
  • -v
    /
    --verbose
    翻译成
    verbose()
  • -X
    /
    --request
    转换为实际的
    动词
    函数(在本例中为
    GET()
这里有一种方法可以将cookie读入文件,以便在
set_cookie()
中使用(如果您确实使用cookie罐):

如果您有单独的cookie与cookie罐:

ctmp <- read.table("cookies.txt", sep="\t", header=FALSE, stringsAsFactors=FALSE)[,6:7]
crumbs <- setNames(as.character(as.character(ctmp$V6)), ctmp$V7)
GET("http://127.0.0.1:8084/clusterpredict/byheaders", 
    content_type_json(),
    user_agent("text2"),
    set_cookies(COOKIE1="value1", COOKIE2="value2),
    verbose())
请注意,
httr
将在同一R会话中对同一域的调用之间保留cookie,因此无需在后续调用中继续指定该文件或那些显式cookie值

您可以将输出值指定给变量,然后从中检索内容:

response <- GET("http://127.0.0.1:8084/clusterpredict/byheaders", 
    content_type_json(),
    user_agent("text2"),
    set_cookies(COOKIE1="value1", COOKIE2="value2),
    verbose())

result <- content(response)
print(str(result))

如果没有实时地址,这很难测试,但是这里有一些东西可以让您开始使用
httr

library(httr)

#curl    -H "Content-Type:application/json"      -X GET  127.0.0.1:8084/clusterpredict/byheaders    -v -b "text1" -A "text2"
GET(
  "127.0.0.1:8084/clusterpredict/byheaders",
  add_headers(
    "Content-Type" = "application/json"
  ),
  set_cookies("text1"),
  user_agent("text2"),
  verbose() #-v
)

我不认为
-b“text1”
首先是有效的?你是想发布数据还是cookie?请注意,GET通常不能与数据过帐结合使用。请澄清您的示例。@Jeroen如果字符串中没有
key=value
,它将尝试从命名的cookie jar文件中读取。“如果行中没有使用“=”符号,它将被视为用于读取以前存储的cookie行的文件名,如果它们匹配,则应在此会话中使用。”因为我扩展的
httr
示例不正确,嗯?;-)@我们一定是在同一时间回答的。当然,你的答案更好,也更详细。我只是随便说说而已:-)谢谢你的答案:)有什么办法可以得到这个问题的结果吗?你认为你能帮上忙吗?
library(jsonlite)
result <- fromJSON(content(response, as="text"))
print(str(result))
library(httr)

#curl    -H "Content-Type:application/json"      -X GET  127.0.0.1:8084/clusterpredict/byheaders    -v -b "text1" -A "text2"
GET(
  "127.0.0.1:8084/clusterpredict/byheaders",
  add_headers(
    "Content-Type" = "application/json"
  ),
  set_cookies("text1"),
  user_agent("text2"),
  verbose() #-v
)