2017-10-17 61 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"))