使用R的Cookie请求

使用R的Cookie请求,r,spring-security,rcurl,rscript,httr,R,Spring Security,Rcurl,Rscript,Httr,我正在尝试将下面的curl命令转换为httr/RCurl,以便将cookie转换为R。但是我不确定如何使用getURL传递数据j_username=username&j_password=password。。。或者 curl --data "j_username=username&j_password=password" http://localhost:8080/myApp/j_spring_security_check --cookie-jar cookies.txt 我能够获取上

我正在尝试将下面的curl命令转换为httr/RCurl,以便将cookie转换为R。但是我不确定如何使用getURL传递数据j_username=username&j_password=password。。。或者

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(dataURL,
   verbose(),
   add_headers("Content-type"="application/json",
               "Accept"="application/json",
               "Accept-Version"=" 1.0",
               "Cookie"="JSESSIONID=24BA7A80A02317AD2B6C87C8D10B6787"
               )
    )

使用以下链接,我能够进行身份验证并从REST获取数据: [如何使用RCurl对spring security/grails应用程序进行身份验证

下面是我的一段代码,可以帮助其他可能遇到此问题的人:

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)

... 

希望这能有所帮助。

使用以下链接,我能够验证并从REST获取数据: [如何使用RCurl对spring security/grails应用程序进行身份验证

下面是我的一段代码,可以帮助其他可能遇到此问题的人:

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)

... 

希望这有帮助。

如果没有可复制的示例,很难判断,但我认为您需要的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。

如果没有可复制的示例,很难判断,但我认为您需要的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。

不要使用ssl.verifypeer=FALSE这是一个极其糟糕的主意。不要使用ssl.verifypeer=FALSE这是一个极其糟糕的主意。谢谢,这会好得多。我不确定如何使用httr传递j_用户名和j_密码,但现在我知道了。我无法确定d这在httr文档中。谢谢,这更好。我不知道如何使用httr传递j_用户名和j_密码,但现在我知道了。我在httr文档中找不到这一点。