首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Geckoboard数据集PHP

Geckoboard数据集PHP
EN

Stack Overflow用户
提问于 2016-10-03 13:00:53
回答 2查看 676关注 0票数 2

好的,所以我一直在处理来自壁板的新数据集--这是文档中的一个示例(我在unix命令行中尝试过,它工作得很好)。但是我需要在一个PHP文件中运行它(在此之前,我正在从WooCommerce中收集数据)。

Ex 1

代码语言:javascript
复制
  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
            }
    ]
}'

我试过了

代码语言:javascript
复制
/*****************
*
*   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);

但什么都没发生。我不太熟悉cURL (或者根本不熟悉这一点)。有人能帮我把命令行cURL翻译成“正确”的PHP版本吗?另外,不确定日期是否正确输出,它必须是YYYY DDTHH:MM:SSZ格式。

感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-04 08:01:11

好的,经过一整晚的搜索和测试,我终于找到了一个可行的解决方案。我不知道为什么我一开始就拿到411,但结果是

代码语言:javascript
复制
CURLOPT_PUT => 1

代之以

代码语言:javascript
复制
CURLOPT_CUSTOMREQUEST => 'PUT'

至少让我发送数据。然后我得到了一个401 (坏的要求)。这仅仅是因为身份验证的通过方式。所以我不得不把

代码语言:javascript
复制
'Authorization', 'OAuth ' . $key

从报头数组中删除,然后使用

代码语言:javascript
复制
CURLOPT_USERPWD =>  $key . ': '

通过这种方式,我从geckoboard传入API密钥(以用户身份),其中包含一个空白密码(user: password )。

然后又出现了一组其他的问题,但我最终还是让它发挥了作用:)

PS。谢谢你,克里斯,你想帮忙!总是同样惊讶于堆积如山社区的普遍乐于助人。

票数 2
EN

Stack Overflow用户

发布于 2016-10-03 13:14:22

将curl_exec()命令分配给变量并查看它返回的内容。

代码语言:javascript
复制
$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手册。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39832313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档