Geckoboard 数据集 PHP cURL API
Geckoboard data set PHP cURL API
好的,所以我一直在研究来自 Geckoboard 的新数据集
这(请参阅下面的 ex #1)是文档中的一个示例(我已经在 unix 命令行中尝试过,它工作得很好)。但是我需要在 PHP 文件中 运行 这个(我在 PHP 之前从 WooCommerce 收集数据)。
示例#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
}
]
}'
我试过了
/*****************
*
* GECKOBOARD
*
*****************/
// API URL
$url = 'https://api.geckoboard.com/datasets/sales.[DATA_SET_NAME]/data';
$key = '[MY_API_KEY]';
$data_array = array(
'net' => $weeklynet,
'timestamp' => date('Y-m-d h:m:s')
);
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
$options = array(
CURLOPT_URL => $url,
CURLOPT_PUT => 1,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization', 'OAuth ' . $key
),
CURLOPT_POSTFIELDS => $data_array
);
curl_setopt_array($ch, $options);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
但是没有任何反应。我不太精通 PHP 的 cURL(或者根本不精通)。是否有人可以帮助我将命令行 cURL“翻译”为“正确的”PHP 版本?此外,不确定日期是否会正确输出,它必须采用以下格式
YYYY-MM-DDTHH:MM:SSZ
感谢您的帮助!
将 curl_exec() 命令分配给一个变量并查看它是什么 returns。
$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。
好的,经过一整夜的搜索和测试,我终于找到了一个可行的解决方案。我不确定为什么一开始我会得到 411,但结果是删除
CURLOPT_PUT => 1
并将其替换为
CURLOPT_CUSTOMREQUEST => 'PUT'
至少让我发送数据。然后我得到了一个 401(错误的请求)。这仅仅是因为通过身份验证的方式。所以我不得不删除
'Authorization', 'OAuth ' . $key
来自 header 数组,而是使用
CURLOPT_USERPWD => $key . ': '
通过这种方式,我从 geckoboard 使用空白密码 (user:password) 传递 API 密钥(作为用户)。
然后还有其他问题,但我终于让它工作了:)
PS。谢谢@Chris 的帮助!总是对 Whosebug 社区的普遍帮助感到同样惊讶。
好的,所以我一直在研究来自 Geckoboard 的新数据集 这(请参阅下面的 ex #1)是文档中的一个示例(我已经在 unix 命令行中尝试过,它工作得很好)。但是我需要在 PHP 文件中 运行 这个(我在 PHP 之前从 WooCommerce 收集数据)。
示例#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
}
]
}'
我试过了
/*****************
*
* GECKOBOARD
*
*****************/
// API URL
$url = 'https://api.geckoboard.com/datasets/sales.[DATA_SET_NAME]/data';
$key = '[MY_API_KEY]';
$data_array = array(
'net' => $weeklynet,
'timestamp' => date('Y-m-d h:m:s')
);
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
$options = array(
CURLOPT_URL => $url,
CURLOPT_PUT => 1,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization', 'OAuth ' . $key
),
CURLOPT_POSTFIELDS => $data_array
);
curl_setopt_array($ch, $options);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
但是没有任何反应。我不太精通 PHP 的 cURL(或者根本不精通)。是否有人可以帮助我将命令行 cURL“翻译”为“正确的”PHP 版本?此外,不确定日期是否会正确输出,它必须采用以下格式 YYYY-MM-DDTHH:MM:SSZ
感谢您的帮助!
将 curl_exec() 命令分配给一个变量并查看它是什么 returns。
$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。
好的,经过一整夜的搜索和测试,我终于找到了一个可行的解决方案。我不确定为什么一开始我会得到 411,但结果是删除
CURLOPT_PUT => 1
并将其替换为
CURLOPT_CUSTOMREQUEST => 'PUT'
至少让我发送数据。然后我得到了一个 401(错误的请求)。这仅仅是因为通过身份验证的方式。所以我不得不删除
'Authorization', 'OAuth ' . $key
来自 header 数组,而是使用
CURLOPT_USERPWD => $key . ': '
通过这种方式,我从 geckoboard 使用空白密码 (user:password) 传递 API 密钥(作为用户)。
然后还有其他问题,但我终于让它工作了:)
PS。谢谢@Chris 的帮助!总是对 Whosebug 社区的普遍帮助感到同样惊讶。