我试图将以下curl命令转换为httr / RCurl以将Cookie转换为R.但我不确定如何传递数据" j_username = username& j_password = password& #34;使用getURL(...)或GET(...)
curl --data "j_username=username&j_password=password" http://localhost:8080/myApp/j_spring_security_check --cookie-jar cookies.txt
我能够获取上面命令行curl命令创建的cookie信息并将其粘贴到GET请求中(它可以工作)。如果我可以在R中生成cookie,那将是方便的。
我的工作httr得到了GET():
GET(dataURL,
verbose(),
add_headers("Content-type"="application/json",
"Accept"="application/json",
"Accept-Version"=" 1.0",
"Cookie"="JSESSIONID=24BA7A80A02317AD2B6C87C8D10B6787"
)
)
答案 0 :(得分:2)
没有可重复的示例很难说,但我认为您想要的httr代码是:
library(httr)
baseUrl <- "http://localhost:8080/myApp/"
POST(baseUrl, path = "j_spring_security_check",
body = list(j_username = "username", j_password = "password"),
multipart = FALSE,
verbose()
)
headers <- add_headers(
"Content-Type" = "application/json",
Accept = "application/json",
"Accept-Version" = "1.0"
)
GET(baseUrl, headers, verbose())
httr会自动设置句柄以保留域内的Cookie。
答案 1 :(得分:0)
使用以下链接,我能够从REST验证并获取数据: [如何使用RCurl对spring security / grails app进行身份验证
以下是我的代码片段,以帮助可能遇到此问题的其他任何人:
require(RCurl)
require(RJSONIO)
baseUrl = "http://localhost:8080/myApp/"
authenticateUrl = paste(baseUrl, "j_spring_security_check", sep="")
curl = getCurlHandle()
curlSetOpt(ssl.verifypeer=FALSE, timeout=60, cookiefile="cookies.txt",
cookiejar="cookies.txt",
followlocation = TRUE, curl=curl, verbose=verbose
)
loginUrl = paste(baseUrl, "login/auth", sep="")
getURL(loginUrl, curl=curl)
postForm(authenticateUrl, .params= list(j_username="username", j_password="password"),
curl=curl, style="POST")
getResponse <- getURL(baseUrl,
httpheader=c("Content-Type"="application/json",
Accept="application/json",
"Accept-Version"=" 1.0"),
curl=curl)
...
希望这会有所帮助。