一、从接口管理员那里物理获取AppID、AppSecret(生成方式可参考 生成自己的AppID、AppSecret)

二、ThinkPHP

cURL查询参数构造:
API采用签名方式验证,事先每个需要调用API接口的系统应申请appid和appsecret,调用接口时,请求参数:

appid(事先申请获取的appid),

random(随机数,调用时随机生成),

timestamp(时间戳,调用时生成当前时间的时间戳),

param(查询参数:province、year、major、type等),

sign(签名,算法:md5(random+timestamp+param+appsecret))
验证:根据appid,获取appsecret,再根据sign的生成规则(md5(random+timestamp+param+appsecret))生成sign,与调用提交的sign对比,一致则验证成功,否则验证失败 。

curl请求:

            $appArr = M('Config')->field('appid,appsecret')->find();$appid = $appArr['appid'];     $appsecret = $appArr['appsecret']; //后台可视化界面中设置输入AppID、AppSecret模块,录入进配置表后查询出$random = mt_rand(1,1000000);$timestamp = time();$sign = $random.$timestamp.$otherParameter.$appsecret;//签名 ($otherParameter为必要的请求参数,根据自己的需要添加)$ch = curl_init();$url = "http://localhost/index.php/Api?m=Inquire&a=getData&appid=".$appid."&random=".$random."&current=".$timestamp."&otherParameter=".$otherParameter."&sign=".$sign; //调用接口地址curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_HEADER, FALSE);$res = curl_exec($ch);curl_close($ch);$res_decode = json_decode($res,true);switch ($res_decode['msg']){case 0 : $error = '验证超时,请重新提交';break;case 2 : $error = '暂无数据';break;case 3 : $error = '验证失败,请重新提交';break;}$planList = $res_decode['info'];$this->assign('error',$error);$this->assign('total',$res_decode['total']);$this->assign('count',$res_decode['count']);$this->assign('dataList',$dataList);

接口:

public function getData(){$dao = M('Data'); //数据表$random =intval($_GET['random']);$timestamp = intval($_GET['current']);$otherParameter = dHtml(htmlCv($_GET['otherParameter']));//必要请求参数$appidGet = dHtml(htmlCv($_GET['appid']));$mapAppid['appid'] = $appidGet;$appsecretGet = M('Proof')->where($mapAppid)->getField('appsecret');//proof表:存储appid、appsecert$signCheck = md5($random.$timestamp.$otherParameter.$appsecretGet);$sign = md5(dHtml(htmlCv($_GET['sign'])));//获取的签名if ($sign === $signCheck){$now = time();if (($now - $timestamp) > 600){ //十分钟$data["msg"]="0"; //超时验证失败echo json_encode($data);exit;}else{$condition = array();$otherParameter && $condition['otherParameter'] = array('eq',$otherParameter);$count = $dao->where($condition)->count();$page = intval($_GET['p']);//获取前台传过来的页码$pageSize=30;  //设置每页显示的条数$start=($page-1)*30; //从第几条开始取记录$totalPage = ceil($count / $pageSize); //总页数$dataList = $dao->where($condition)->Limit($start.','.$pageSize)->select();if ($dataList !== null){$data["msg"]="1"; //状态码$data['total'] = $totalPage; //总页数$data['info'] = $dataList; //数据列表$data['count'] = $count; //记录数echo json_encode($data);exit;}else{$data["msg"]="2"; //暂无数据echo json_encode($data);exit;}}}else{$data["msg"]="3"; //sign验证失败echo json_encode($data);exit;}}

不再关心宇宙从哪来到哪去

只想低下头好好珍惜身边人的普普通程序员

ThinkPHP通过cURL的调用接口数据相关推荐

  1. 用curl post 调用接口

    用curl post 调用接口 业务代码省略 代码调用部分 // +- curl post 调mars接口 $url = '192.168.1.174/mars/surface.php?s=Inter ...

  2. 新手自学php,curl应用时接口数据无返回值

    一个php项目遇到接口返回值为空:如下 <?php header('Content-Type:text/html;charset=utf-8'); $host = "https://* ...

  3. curl命令调用接口

    一.post请求 参数是请求体 @RequestBody curl -H "Authorization:Bearer 5d3d3101-881f-4219-bfdf-b69540f960ba ...

  4. PHP的CURL:请求接口 模拟请求登陆 上传下载

    步骤 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:初始化:初始化连接句柄: 设置:设置CURL选项: 执行:执行并获取结果: 得出:释放VURL连接句柄. 代码 // 1. ...

  5. php 调用接口方式

    1.一般常用方法 file_get_contents(): 今天调用了一个反人类的接口,接口是get方式传输,里面有一个参数是当前时间,没错,不是时间戳,是当前格式化的时间:2017-8-9 11:1 ...

  6. python 跨库查询(同一实例不同数据库)和接口数据进行对比,并把结果输出到Excel中

    由于工作需要写了一个小脚本 ,需要跨库查询数据和接口中的数据做对比 ,并输出到Excel中 思路: 1 最笨的办法,把跨库查询的sql 拆成两部分,先查出固定的数据(做参数的数据) 2 另外数据库和接 ...

  7. php请求接口数据,php curl请求接口并获取数据的示例代码

    当我们在做PHP开发的时候,很多时候需要对接口进行测试,或者更方便的调用一些已有模块的接口,取到结果并进行后续操作,我们可以通过curl进行模拟提交post和get请求,来去实现这些功能. 下面是对c ...

  8. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...

    与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接 ...

  9. PHP:使用curl请求聚合支付的驾考宝典题库接口数据, 并渲染到页面上;composer 常用的指令;mvc pathinfo 路由映射实现

    PHP:使用curl请求聚合支付的驾考宝典题库接口数据, 并渲染到页面上;composer 常用的指令;mvc pathinfo 路由映射实现 一. API 基础知识 url 的相关知识 1.1 一切 ...

最新文章

  1. 解压ubi文件_制作ubi文件系统
  2. 生活有时会有点苦涩——一位第六年还没发paper的PHD的自述
  3. tomcat 编译版本
  4. OV5640全景模式预览倒180度,拍照正常的问题
  5. asp简单样例(1)
  6. java包装类方法_Java包装类
  7. phpstrom 编辑器设置
  8. 【转】RocketMQ的一些特性(生产者消费者配置参数的含义)
  9. 蒙特卡洛法求圆周率 c语言,c++蒙特卡洛法求圆周率
  10. 【BZOJ2938】病毒,AC自动机练习
  11. 3 微信开发本地代理环境的搭建--实现将内网ip映射到外网
  12. LINUX C#开发教程
  13. 守望先锋游戏反外挂技术测评
  14. Jump视频实时抠图和语音降噪
  15. http协议学习(转载,侵删)
  16. 解析迅捷产品的八大特点
  17. 关于数组名(arr)的理解
  18. SQL除法怎么用代码表示
  19. 从表征到行动---意向性的自然主义进路(续二)
  20. 运行错误:view size is not compatible with input tensor‘s size and stride (at least

热门文章

  1. C# 转账到个人支付宝
  2. 对象存储成云价格战新战场
  3. 内卷 - 内卷化 - 过密化 - involution
  4. git 切换提交账号
  5. 搭建Docker本地私有镜像仓库
  6. 什么是Jupyter Notebook? 数据分析更轻松
  7. 编程走火入魔的十个迹象,你中枪了吗?
  8. [洛谷] P1498 南蛮图腾
  9. Unity3D游戏开发之伤害数值显示
  10. 057 [转载]城里城外看SSDT