microsnow 发表于 2015-3-27 03:45:53

使用PHP调用openAPI

本帖最后由 microsnow 于 2015-3-27 03:48 编辑

test.php下面是调用登录接口,为实例。需要配置 appidusername password 。代码如下:
<?php
$appid = 'xxxxxxxxxx';

require_once './http.class.php';

// 参数数组
$data = array (
      'username' => 'xxxxxxxxx',
      'password' => 'xxxxxxxx',
);

$uri = '/app/login';
$r = Gokit_Http::post($uri, $data);
var_dump($r);
?>http.class.php
<?php
      class Gokit_Http
      {
                public static $ch = null;
                public static $url_prefix = 'http://api.gizwits.com';

                public static $appid = '';

                // 初始化curl
                public static function init()
                {
                        if (!self::$ch) {
                              self::$ch = curl_init();
                        }
                        global $appid;
                        self::$appid = $appid;
                }

                // post 请求
                public static function post($uri, $data)
                {
                        self::init();
                        // 传输的json数据
                        $data = json_encode($data);
                        // 组拼Header
                        
                        $headerArr = ["X-Gizwits-Application-Id: ".self::$appid , 'Content-Type: application/json'];
                        // curl 设置
                        curl_setopt ( self::$ch, CURLOPT_URL, self::$url_prefix.$uri );
                        curl_setopt ( self::$ch, CURLOPT_POST, 1 );
                        curl_setopt ( self::$ch, CURLOPT_HEADER, 0 );
                        curl_setopt (self::$ch, CURLOPT_HTTPHEADER , $headerArr );//构造IP
                        curl_setopt (self::$ch, CURLOPT_BINARYTRANSFER,true);
                        curl_setopt ( self::$ch, CURLOPT_RETURNTRANSFER, 1 );
                        curl_setopt ( self::$ch, CURLOPT_POSTFIELDS, $data );
                        $r = curl_exec ( self::$ch );
                        curl_close ( self::$ch );
                        self::$ch = null;
                        // 处理结果
                        return self::response($r);
                }

                // 处理输出
                public static function response($r)
                {
                        if ($r) {
                              $r = json_decode($r, true);
                              if ($r) {
                                        return $r;
                              }
                        }
                        return '请求失败:'.var_export($r, true);
                }
      }
?>


H文举 发表于 2015-3-30 21:32:16

请问test是起什么作用的

microsnow 发表于 2015-3-30 23:39:51

H文举 发表于 2015-3-30 21:32
请问test是起什么作用的

test.php 调用的是登录接口

H文举 发表于 2015-4-3 17:16:29

请问如果要向服务器get数据该怎么**作呢,能提供一下例程吗(比如获取设备最近上传数据点 ),谢谢

microsnow 发表于 2015-4-3 17:51:54

H文举 发表于 2015-4-3 17:16
请问如果要向服务器get数据该怎么**作呢,能提供一下例程吗(比如获取设备最近上传数据点 ),谢谢 ...

<?php
        class Gokit_Http
        {
                public static $ch = null;
                public static $url_prefix = 'http://api.gizwits.com/';
                // public static $url_prefix = 'http://gokit_test.com/';

                public static $appid = '';
                public static $token = '';

                public static $headerArr = [];

                // 初始化curl
                public static function init()
                {
                        if (!self::$ch) {
                                self::$ch = curl_init();
                        }
                        global $appid,$token;
                        self::$headerArr[] = 'Content-Type: application/json';
                        if ($appid) {
                                self::$headerArr[] = "X-Gizwits-Application-Id: ".$appid;
                        }
                        if ($token) {
                                self::$headerArr[] = "X-Gizwits-User-token: ".$token;
                        }
                }

                // post 请求
                public static function post($uri, $data)
                {
                        self::init();
                        // 传输的json数据
                        $data = json_encode($data);
                        // curl 设置
                        curl_setopt(self::$ch, CURLOPT_URL, self::$url_prefix.$uri );
                        curl_setopt(self::$ch, CURLOPT_POST, 1 );
                        curl_setopt(self::$ch, CURLOPT_HEADER, 0 );
                        curl_setopt(self::$ch, CURLOPT_HTTPHEADER , self::$headerArr );//构造IP
                        curl_setopt(self::$ch, CURLOPT_BINARYTRANSFER, true);
                        curl_setopt(self::$ch, CURLOPT_RETURNTRANSFER, 1 );
                        curl_setopt(self::$ch, CURLOPT_POSTFIELDS, $data);
                        $r = curl_exec(self::$ch);
                        curl_close(self::$ch);
                        self::$ch = null;
                        // 处理结果
                        // test
                        return $r;
                        return self::response($r);
                }

                // get 请求
                public static function get($uri)
                {
                        self::init();
                        // curl 设置
                        curl_setopt(self::$ch, CURLOPT_URL, self::$url_prefix.$uri );
                        curl_setopt(self::$ch, CURLOPT_HTTPHEADER , self::$headerArr );//构造IP
                        curl_setopt(self::$ch, CURLOPT_BINARYTRANSFER, true);
                        curl_setopt(self::$ch, CURLOPT_RETURNTRANSFER, 1 );
                        curl_setopt(self::$ch, CURLOPT_HEADER, 0 );
                        $r = curl_exec ( self::$ch );
                        curl_close ( self::$ch );
                        self::$ch = null;
                        // 处理结果
                        return self::response($r);
                }

                // get 请求
                public static function delete($uri, $data = [])
                {
                        self::init();
                        // curl 设置
                        curl_setopt(self::$ch, CURLOPT_URL, self::$url_prefix.$uri );
                        $data = json_encode($data);
                        curl_setopt(self::$ch, CURLOPT_POSTFIELDS, $data);
                        curl_setopt(self::$ch, CURLOPT_HTTPHEADER , self::$headerArr );//构造IP
                        curl_setopt(self::$ch, CURLOPT_BINARYTRANSFER, true);
                        curl_setopt(self::$ch, CURLOPT_RETURNTRANSFER, 1 );
                        curl_setopt(self::$ch, CURLOPT_HEADER, 0 );
                        curl_setopt(self::$ch, CURLOPT_CUSTOMREQUEST, "DELETE");
                        $r = curl_exec ( self::$ch );
                        curl_close ( self::$ch );
                        self::$ch = null;
                        // 处理结果
                        return self::response($r);
                }

                // 处理输出
                public static function response($r)
                {
                        if ($r) {
                                $r = json_decode($r, true);
                                if ($r) {
                                        return $r;
                                }
                        }
                        return '请求失败:'.var_export($r, true);
                }
        }
?>

microsnow 发表于 2015-4-3 17:53:21

H文举 发表于 2015-4-3 17:16
请问如果要向服务器get数据该怎么**作呢,能提供一下例程吗(比如获取设备最近上传数据点 ),谢谢 ...

我是写的Gokit_Http类,希望对你有用

H文举 发表于 2015-4-3 20:42:38

好的,非常感谢

suoma 发表于 2015-4-7 13:02:54

谢谢分享学习一下

johnvuong1999 发表于 2015-6-11 09:41:48

谢谢分享,感谢楼主。

johnvuong1999 发表于 2015-6-21 09:15:53

楼主虚拟设备上面搞这个,网页调用,发现连不上啊,手机上APP用手机号码登录是可以的呢。

array(3) { ["error_message"]=> string(20) "user does not exist!" ["error_code"]=> int(9005) ["detail_message"]=> NULL }

我用手机号码登录的啊。

microsnow 发表于 2015-6-23 11:19:06

johnvuong1999 发表于 2015-6-21 09:15
楼主虚拟设备上面搞这个,网页调用,发现连不上啊,手机上APP用手机号码登录是可以的呢。

array(3) { ["er ...

提示是用户不存在,需要先调用注册接口进行注册

Herman 发表于 2019-5-23 20:12:00

想弱弱的问一下这个用户名和密码是机智云的吗?入门蒙
页: [1]
查看完整版本: 使用PHP调用openAPI