PHP和OneNet平台交互

        此前,关于Microduino如何同OneNet平台交互我已经写了一个系列,想了解的可以点击此链接:http://blog.csdn.net/wobeatit/article/details/77985333进一步了解。关于使用PHP和OneNet平台的交互,实际上比硬件方面的交互要简单些,所以接下来的讲解会比较粗糙。

      上传数据

       首先附上上传数据的php源码,此段代码我主要使用curl函数来构造HTTP报文,与OneNET平台交互。

在这里应注意的是,curl函数需要在php.ini的配置文件中打开:

<?php
//php post数据到onenet平台 
$url = 'http://api.heclouds.com/devices/*****/datapoints?type=3';//*****处填写自己的设备ID号
$header[]="api-key:************"; //填写自己的api-key号
$content = "{\"a\":20}";//向OneNET发送的数据JSON格式
function post($url, $header, $content)
{
   $ch= curl_init();
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//TRUE-->将curl_exec()获取的信息以字符串返回,而不是直接输出。
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  //启用时会将头文件的信息作为数据流输出
   curl_setopt($ch, CURLOPT_POST, true);//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样
   curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
   if(curl_exec($ch) === false) //curl_error()返回当前会话最后一次错误的字符串
       {
             die("Curlerror: ".curl_error($ch));
       }
   $response= curl_exec($ch);//获取返回的文件流
   curl_close($ch);
   return $response;
}

$output = post($url,$header,$content);
$output_array = json_decode($output,true);
print_r($output_array); 
?>

      再附上在之前的博客中提到的与OneNET平台交互的HTTP报文格式:

POST/devices/*****/datapoints?type=3HTTP/1.1

api-key:****************

Host:api.heclouds.com

Connection:close 

Content-Length:23

{“a”:20}

  对比可发现,使用curl函数表示HTTP报文时,实际上就是拼接出了HTTP报文形式。


    获取数据

   从OneNet获取数据,实际上要比发送数据代码编写更为简单,先附上源码:

<?php
$header[]="api-key:*********";//此处写成自己的API-KEY值
$url="http://api.heclouds.com/devices/******/datastreams/**";/*获取数据流为**的数据值,注意此处设备ID号以及申请获取的数据流ID号都应根据自己的OneNet平台设备ID号,希望获取的数据流ID号进行更改*/ 
//用于获取从OneNet平台返还的数据
function get($url, $header)
{
       //1.初始化,创建一个新cURL资源
       $ch=curl_init();
       //2.设置URL和相应的选项
       curl_setopt($ch,CURLOPT_URL,$url);//需要获取的URL地址,也可以在curl_init()函数中设置
       curl_setopt($ch,CURLOPT_HTTPHEADER,$header);//启用时会将头文件的信息作为数据流输出
       curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//将curl_exec()获取的信息以字符串返回,而不是直接输出。
       curl_setopt($ch,CURLOPT_HEADER,0);//启用时会将头文件的信息作为数据流输出。
       if(curl_exec($ch)=== false) //curl_error()返回当前会话最后一次错误的字符串
       {
             die("Curlerror: ".curl_error($ch));
       }
       $response =curl_exec($ch);//获取返回的文件流
    curl_close($ch);
    return $response;
}

$output=get($url,$header);
$output_array=json_decode($output,true);
print_r($output_array);
/*
print_r($output_array["data"]["update_at"]);
print_r($output_array["data"]["current_value"]);
*/
?>

贴上之前博客中提到的向OneNet平台发送数据的完整HTTP报文格式:

GET/devices/***/ datastreams/aHTTP/1.1

api-key:*************

Host:api.heclouds.com

Connection:close

    可以发现php实现获取数据其实是同发送数据一样,利用curl函数实现了获取数据的HTTP请求报文的拼接。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值