2017-03-03 56 views
0

調用API希望你能幫助我,我不是集成:)在R(HTTR包)

的專家有一個系統叫社會面包店(DOC:https://api.socialbakers.com),我嘗試獲取一些數據。我有一個令牌,一個祕密,我想我正在做第一部分的權利。

我只是想用這個片段連接:

library(httr) 

req <- GET("https://api.socialbakers.com/0/facebook/profiles", 
     authenticate("token", "secret", type = "basic")) 
stop_for_status(req) 
content(req) 

這完美的作品。我有一個JSON響應,我可以解析成表格。 我的問題是關於這樣的另一個網址:

library(httr) 

req <- GET("https://api.socialbakers.com/0/facebook/metrics", 
     authenticate("token", "secret", type = "basic")) 
stop_for_status(req) 
content(req) 

相同的代碼,不工作了,返回

代碼405 HTTP方法無效

我不知道,如果我做的是正確的,文檔的某些部分說我必須在標題上使用base64,但爲什麼要在第一部分中工作?有些意見,將是非常讚賞:)

編輯:

解決:在這種情況下,正確的方法與API使用POST方法的參數發送到服務交互。

使用了以下代碼片段。

library(httr) 
library(RCurl) 
library(jsonlite) 

doc <- POST("https://api.socialbakers.com/0/facebook/metrics", 
     authenticate("user", 
        "pass", 
        type = "basic"), 
     body = list(
      date_start = "2016-01-11", 
      date_end = "2016-01-12", 
      profiles = c("12345", "123456"), 
      metrics = c("fans_count_lifetime", "fans_change")) 
     , encode = "json") 
stop_for_status(doc) 
content(doc) 

謝謝。

+2

根據您提供的鏈接上的每個文檔,度量請求都需要參數。他們有[示例請求](https://api.socialbakers.com/#facebook-metrics)(右側)。 – r2evans

回答

0

在這種情況下,與API交互的正確方法是使用POST方法將參數發送到服務。

使用了以下代碼片段。

library(httr) 
library(RCurl) 
library(jsonlite) 

doc <- POST("https://api.socialbakers.com/0/facebook/metrics", 
    authenticate("user", 
       "pass", 
       type = "basic"), 
    body = list(
     date_start = "2016-01-11", 
     date_end = "2016-01-12", 
     profiles = c("12345", "123456"), 
     metrics = c("fans_count_lifetime", "fans_change")) 
    , encode = "json") 
stop_for_status(doc) 
content(doc)enter code here