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