最近的一个项目,用到了极光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开发的亲一个少走弯路的机会,如果还有问题,我们可以沟通。

php 调用极光api,利用php+curl调用极光IM第三方REST API方法经验相关推荐

  1. php 调用url field,使用 PHP curl 调用 API,如何传递如下格式的 POSTFIELD?

    想要传输数据的格式: param = { 'xx' : 'ss', 'xx' : 'ss', 'xx' : 'ss', } 我自己写的: $params = array( 'param' => ...

  2. android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...

    想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...

  3. curl跨服务器请求文件,Curl上传文件的服务器API POST调用

    我想将一系列POSTMAN调用翻译成bash以创建脚本.超级简单到现在,我要发布与形式,data.I角色的XLSX文件中使用这个脚本:Curl上传文件的服务器API POST调用 curl -i -X ...

  4. 利用vue+axios调用api做一个获取笑话页面

    简单利用axios+vue调用api案例 点击按钮获取笑话 笑话api:https://autumnfish.cn/api/joke 代码如下: <!DOCTYPE html> <h ...

  5. SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断...

    1 远程服务资源的调用 1.1 古老的套路 在微服务出现之前,所有的远程服务资源必须通过RestTemplate或者HttpClient进行:但是这两者仅仅实现了远程服务资源的调用,并未提供负载均衡实 ...

  6. 利用c#实现远程注入非托管WIN32程序,并利用嵌入汇编调用非托管WIN32程序中的内部过程...

    c#通过调用windows API函数,可以很轻松的完成非托管WIN32程序的注入.内存读写等操作,以下为c#实现远程注入非托管WIN32程序,并利用嵌入汇编调用非托管WIN32程序中的内部过程的源码 ...

  7. curl调用新版jenkins crumb报错 No valid crumb was included in the request 解决方法

    说明:新版本的jenkins不能关闭csrf检校.也不建议关闭. jenkis版本:2.319.1 linux操作系统下 操作: 参数设置: jenkins_user=root jenkins_pas ...

  8. java调用asp.net webapi_通过HttpClient 调用ASP.NET Web API示例

    在前面两篇文章中我们介绍了ASP.NET Web API的基本知识和原理,并且通过简单的实例了解了它的基本(CRUD)操作.我们是通过JQuery和Ajax对Web API进行数据操作.这一篇我们来介 ...

  9. 使用CURL调用接口[*示例*]

    <?php header("content-type:text/html;charset=utf-8");/*这是 使用CURL调用接口*/$ch = curl_init() ...

  10. 利用java反射调用类的的私有方法

    http://blog.csdn.net/sunyujia/article/details/2501709 今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为在反射看来根 ...

最新文章

  1. 3d 自动生成物体_Adobe发布3D建模、AR内容生成应用Scantastic
  2. Silverlight 游戏开发:可重用的拖拽控件
  3. 真正理解 MySQL 的四种隔离级别
  4. 软件技术专业-就业提示(三、Java工程师必备技能)
  5. delete from表名和truncate table 表名的区别
  6. php 系统环境变量引用,PHP 系统变量 环境变量
  7. 30岁菜鸟涛学习VB.net 第八天
  8. Java中的Random()函数 【转载】
  9. tornado的views(templates)
  10. JavaWeb中实现验证码(servlet版)
  11. 极域教室管理软件全屏广播窗口化,解除网络限制,阻止老师监控进程,阻止黑屏安静,强制杀死极域进程等
  12. for循环练习题-编写程序,根据输入行数,输出金字塔图案
  13. 计算机无法安装win10,电脑无法安装win10系统的原因及解决方法
  14. 《我想进大厂》之分布式锁夺命连环9问 | 大理版人在囧途
  15. 图灵学院专用-- 00JVM参数手册
  16. uClinux移植与分析(3)
  17. 微信公众平台开发的相关问题
  18. 对于Verilog语言的一些总结
  19. 企业级服务器硬盘和,企业级硬盘与nas硬盘区别是什么,性能哪个好
  20. win7计算机自动关机设置在哪里设置方法,Win7小技巧:自动关机怎么设置?

热门文章

  1. 职业规划报告!草草了事,看看得了
  2. UML类图详解及rose中的画法
  3. axure 破解 key
  4. error LNK2019: 无法解析的外部符号 main,函数 “int __cdecl __scrt_common_main_seh(void)“ (?__scrt_common_main_seh
  5. 【数理统计】数理统计的简单认识
  6. JSON转换问题最全详解(json转List,json转对象,json转JSONObject)
  7. js中JSON转对象、对象转JSON
  8. 青蓝电影质感LR预设达芬奇/PS/PR/LUT人像lightroom胶片调色滤镜插件
  9. python做马尔科夫模型预测法_Python 3 爬虫学习笔记 8 马尔科夫模型
  10. 西蒙斯的赚钱秘籍:隐马尔科夫模型(HMM)的择时应用