利用php+curl调用极光IM第三方REST API方法经验

来源:互联网 发布:红包自动抢软件 编辑:程序博客网 时间:2024/05/29 10:30

最近的一个项目,用到了极光IM的REST API,由于他们官方没有开发完服务器端的PHP版本的SDK,只能直接封装这些REST API。REST API的调用大同小异,这次的尝试,可以在其他的项目里举一反三。

php里面,模拟客户端发送http请求,可以使用curl工具或者叫做库。php安装的时候,curl默认会自动安装,如果没有安装,请自行根据自己的平台进行安装。

为了测试 远程的REST API是否正常,可以先直接在终端里面,用命令行的方式。

有两种方法使用curl,一种在直接运行curl工具,另一种是在php里面调用curl库函数,下面以极光IM的重置密码为例。


1.运行curl工具。例如调用极光IM的重置密码的API时,采用的是PUT方法,且需要加入验证信息。

curl -v -H "Content-Type:application/json" -H "Authorization: Basic MjY54445OWR222Y2YTMzZTJiMzgwZjI1OmRlNGMzOGFjZDBhODRhM2E5YmQ1MGI0Ng==" -X PUT --data "{ "new_password":234567}" https://api.im.jpush.cn/v1/users/15800645816/password
因为头信息需要两个,采取了(),{}的方式都不成功,只能这样比较粗暴的方式,使用两次-H。

2.创建两个函数,一个封装curl的和服务器交换方法,一个是自己的业务逻辑函数。


       //重置密码调用    public function putim_curl($mobile, $param = "", $header = "") {        if (empty($param)) { return false; }        $str = "/v1/users/".$mobile."/password";        $putUrl = "https://api.im.jpush.cn".$str;        $ch = curl_init();  //初始化curl        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");        curl_setopt($ch, CURLOPT_URL,$putUrl);                 //目标网页    //    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);            //要求结果为字符串且输出到屏幕上                curl_setopt($ch, CURLOPT_HTTPHEADER,$header);           // 增加 HTTP Header(头)里的字段                curl_setopt($ch, CURLOPT_POSTFIELDS, $param);        $data = curl_exec($ch);                                 //运行curl        curl_close($ch);        return $data;    }        //重置密码    public function putResetPassword(){        $mobile = $_REQUEST['mobile'];        $newpass = $_REQUEST['new_pass'];        if(empty($mobile) || empty($newpass)){            return FALSE;        }  else {            $str = $this->app_key.":".$this->master_secret;            $base64=base64_encode($str);                   $header[] = 'Content-Type:application/json';            $header[] = 'Authorization: Basic '.$base64;            $data = array(                "new_password"=>$newpass            );            $data = json_encode($data);            $res = $this->putim_curl($mobile,$data,$header);    print_r($res);            if($res[0]){       //得到返回值--成功已否后面判断                var_dump($res);            }else{          //未得到返回值--返回失败                //return false;                echo 0;            }        }     }
最后吐槽一下,极光IM那边的人对免费用户的服务态度好差,,,遇到问题了,老半天得不到他们的回复,回复也不详细,,,php的他们说没有用,不会看。。。。。呵呵。

写本博客的,就是希望给使用php开发的亲一个少走弯路的机会,如果还有问题,我们可以沟通。

0 0
原创粉丝点击