2016-10-03 127 views
2

好的,所以我一直在玩從Geckoboard 這個新的數據集(參見下面的ex#1)是一個文檔中的例子(我已經嘗試了一個unix命令線,它工作得很好)。但我需要在一個PHP文件中運行這個(我在這之前從我的PHP中收集WooCommerce的數據)。壁虎板數據集PHP cURL API

例#1

curl https://api.geckoboard.com/datasets/sales.gross/data \ 
     -X PUT \ 
     -u '222efc82e7933138077b1c2554439e15:' \ 
     -H 'Content-Type: application/json' \ 
     -d '{ 
     "data": [ 
      { 
      "timestamp": "2016-01-01T12:00:00Z", 
      "amount": 819 
      }, 
      { 
      "timestamp": "2016-01-02T12:00:00Z", 
      "amount": 409 
      }, 
      { 
      "timestamp": "2016-01-03T12:00:00Z", 
      "amount": 164 
      } 
    ] 
}' 

我已經試過這

​​

但沒有任何反應。我不太熟悉PHP的cURL(或者根本就不是)。有沒有人能夠幫助我將命令行cURL「翻譯」爲「正確的」PHP版本?此外,不確定日期將輸出正確,它必須在格式 YYYY-MM-DDTHH:MM:SSZ

感謝您的任何幫助!

+0

澄清「但沒有任何反應。」儘可能具體 - 發生了一些事情;它什麼都沒有返回?執行是否停在某一行?等等 –

回答

2

好的,經過整夜搜索和測試,我終於找到了一個可行的解決方案。我不知道爲什麼我在第一時間獲取411,但事實證明,消除

CURLOPT_PUT => 1 

CURLOPT_CUSTOMREQUEST => 'PUT' 

替換它至少讓我發送數據。然後我得到了401(壞請求)。這僅僅是因爲認證通過的方式。於是,我只好從頭部數組中刪除

'Authorization', 'OAuth ' . $key 

,而使用

CURLOPT_USERPWD => $key . ': ' 

這樣,我傳遞的API密鑰(作爲一個用戶)從geckoboard使用空白密碼(用戶:密碼)。

再就是其中一組的其他問題,但我終於得到這個工作仍:)

PS。謝謝@Chris試圖幫助!總是同樣驚訝於stackoverflow社區的一般幫助。

0

將curl_exec()命令分配給一個變量並查看它返回的內容。

$content = curl_exec($ch); 
$headers = curl_getinfo($ch); 
curl_close($ch); 
if($headers['http_code'] < 400){ 
    /* Do stuff as needed starting with perhaps: 
     echo "<pre>"; 
     print_r($content); */ 
} 

查看關於curl的PHP手冊here

+0

謝謝你的回覆。我試了一下,我得到了「411長度要求」。但我真的不知道該怎麼辦。谷歌搜索它,我想出了一些似乎更先進的問題。我只是不確定我是如何在PHP的cURL中傳遞API KEY的?當我在unix命令行中執行它時,它工作得很好,但我似乎無法找到PHP中的命令。 – axelra82

+0

也許這可以清除我需要做什麼的問題(來自geckoboard的「支持」) curl https://api.geckoboard.com/ -u「[API_KEY]:」是命令行。這怎麼翻譯成PHP中的cURL? :) – axelra82

+0

嘗試在您的CURLOPT_HTTPHEADER數組中添加「Content-Length:$ length」並設置$ length = count($ data_array);緊跟在你的$ data_array賦值之後。 – Chris