2017-10-17 86 views
0

我試圖從API中獲取信息。我有捲曲聲明可惜捲翹器其現在不是R. 我捲曲聲明支持是:從R調用API來檢索數據

curl -X GET "http://192.168.26.71:8080/recommender/containing/? 
    lat=5.010880470275879&lon=47.293949127197266&floor=0" -H "accept: 
    application/json" 

我與下文提到的代碼嘗試;

library(RCurl) 
library(RJSONIO) 
postForm("http://192.168.26.71:8080/recommender/containing/", 
.opts = list(postfields = toJSON(list('lat' = "5.010880470275879", 
'lon' = "47.293949127197266", 'floor' = "0")), 
httpheader = c('Content-Type' = 'application/json', Accept = 
'application/json'), 
ssl.verifypeer = FALSE)) 

但它給了我一個錯誤;

Error: Not Found 
* Trying 192.168.26.71... 
* Connected to 192.168.26.71 (192.168.26.71) port 8080 (#0) 
> POST /recommender/containing/ HTTP/1.1 
Host: 192.168.26.71:8080 
Content-Type: application/json 
Accept: application/json 
Content-Length: 75 

* upload completely sent off: 75 out of 75 bytes 
< HTTP/1.1 404 Not Found 
< Date: Tue, 17 Oct 2017 14:24:14 GMT 
< Access-Control-Allow-Origin: * 
< Access-Control-Request-Method: GET, PUT, POST, DELETE 
< Access-Control-Allow-Headers: Location, Cache-Control, Pragma, Origin, 
Authorization, Content-Type, X-Requested-With 
< Access-Control-Expose-Headers: Location, Cache-Control, Pragma, Origin, 
Authorization, Content-Type, X-Requested-With 
< Content-Type: application/json 
< Transfer-Encoding: chunked 
< Server: Jetty(9.3.8.v20160314) 
< 
* Connection #0 to host 192.168.26.71 left intact 
    Error: Not Found 

任何人都可以請幫助我嗎?謝謝:)

+0

「not found」?啓用CURLOPT_VERBOSE,併發布詳細日誌 – hanshenrik

+0

感謝您的回覆。但我猜R中沒有CURLOPT_VERBOSE選項。 – Saara

+0

RCurl是libcurl庫的封裝,對吧?如果它沒有辦法讓你啓用libcurl的CURLOPT_VERBOSE ... RCurl文檔在哪裏,它會是一個低劣的包裝器? – hanshenrik

回答

0

嗯,你的命令行請求發出一個GET,但你的Rcurl代碼調用postForm這是一個POST請求。那些永遠不會是一樣的。更相似的通話將

my_url <- "http://192.168.26.71:8080/recommender/containing/?lat=5.010880470275879&lon=47.293949127197266&floor=0" 
getURL(my_url, 
    httpheader = c(Accept = 'application/json'), 
    ssl.verifypeer = FALSE) 

RCurl pacakge並沒有真正似乎幫助構建URL。 urltools::param_set()函數可能會有幫助。儘管現在用於製作http請求的更受歡迎的pacakge是httr。您的請求看起來像這樣

library(httr) 
GET("http://192.168.26.71:8080/recommender/containing/", 
    query = list('lat' = "5.010880470275879", 
    'lon' = "47.293949127197266", 
    'floor' = "0"), 
    add_headers(Accept = "application/json"))