2014-04-09 9 views
1

R로 쿠키를 가져 오기 위해 다음 curl 명령을 httr/RCurl로 변환하려고합니다. 그러나 getURL을 사용하여 데이터 "j_username = username & j_password = password"를 전달하는 방법을 모르겠습니다. (...) 또는 GET (...)R을 사용하는 쿠키 요청

curl --data "j_username=username&j_password=password" http://localhost:8080/myApp/j_spring_security_check --cookie-jar cookies.txt 

내가 위의 명령 줄 curl 명령에 의해 생성 된 쿠키 정보를 얻고 (작동) GET 요청에 붙여 넣을 수 있어요. R 내에서 쿠키를 생성 할 수 있다면 편리 할 것입니다. 여기

내 작업 HTTR GET GET()이다 :

GET(dataURL, 
    verbose(), 
    add_headers("Content-type"="application/json", 
       "Accept"="application/json", 
       "Accept-Version"=" 1.0", 
       "Cookie"="JSESSIONID=24BA7A80A02317AD2B6C87C8D10B6787" 
       ) 
    ) 

답변

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을 자동으로 도메인 내에서 쿠키를 보존하기 위해 핸들을 설정합니다.

+0

감사합니다. httr을 사용하여 j_username 및 j_password를 전달하는 방법을 잘 모르겠습니다. 나는 httr 문서에서 이것을 발견 할 수 없었다. – codeBarer

0

내가 인증하고 REST에서 데이터를 얻을 수 있었다 다음 링크를 사용 : 를 [보안/Grails의 응용 프로그램

봄을 인증하는 RCurl를 사용하는 방법 이 도움이

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) 

... 

희망 :

다음은이 문제에 실행할 수있는 다른 사람을 돕기 위해 내 코드의 조각입니다.

+0

__ 사용하지 마십시오.'ssl.verifypeer = FALSE' 이것은 매우 나쁜 생각입니다. – hadley