php之接口内curl请求其他接口
今天遇到一个需要写curl的需求,情况是这样的:
同一应用的A系统(购物系统),B系统(答题系统)相互独立,用户数据全部存在于A系统的数据库中,
现在处于B系统的某项操作中,需要在B系统中验证当前请求的人是不是此应用的会员,要验证是不是该应用的
会员,当然是要拿当前用户的标识到数据库比对啊,可是数据库在A系统里啊,当时我就想到了curl,画个图吧:
其实说白了,就是模拟http请求,因为不同于前端,可以通过ajax或者其他方式直接发起http请求,后端只好通过curl来
模拟这种请求,以便达到和前端相同的效果。
于是百度搜了一个php的curl方法,封装了一下:
- public static function curl_post($url,$array){
- $curl = curl_init();
- //设置提交的url
- curl_setopt($curl, CURLOPT_URL, $url);
- //设置post方式提交
- curl_setopt($curl, CURLOPT_POST, );
- //设置post数据
- curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($array));
- //执行命令
- $data = curl_exec($curl);
- //关闭URL请求
- curl_close($curl);
- //获得数据并返回
- return $data;
- }
然后就愉快地调用了:
- $array = array('open_id'=>$openid);
- $url = dr_var("verify");
- $res = $this->curl_post($url,$array);
这里是在B系统接口里面模拟请求了A系统的一个verify接口,用来审核用户身份,然后根据审核结果决定B系统
接口向外返回什么。
最后跑B系统接口的时候,却发现,返回的除了B系统接口返回值之外,还夹杂着A系统接口(verify)的返回值,
一时间很是不解,到处看verify接口返回值那里出了什么错,exit(json_encode(array("a"=>a)))不奏效,于是换成
return array("a"=>a);还是不奏效,又换成var_dump(array("a"=>a));还是不行!!!依旧返回两个接口的返回值。
后来,后来,一句一句地调试封装的curl函数,发现上面红字那块就已经将verify接口的值直接打印出来了,
于是百度关键字:curl 不直接输出;哗啦啦,出来一大串相关信息,随便打开一条,找到了答案,原来是curl少
设置了一个参数:
- //获取数据不直接输出
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
最终问题解决了,也算是get到了php的curl参数设置的一个小知识点~~~
php之接口内curl请求其他接口的更多相关文章
- PHP Curl请求Https接口
在请求http的时候只需要 file_get_contents("http://www.sojson.com/open/api/weather/json.shtml?city=$Positi ...
- php curl 请求api 接口
官方文档curl : http://www.runoob.com/php/php-ref-curl.html php开启curl : ① 打开 php.ini 文件 extension=php_c ...
- axios如何先请求A接口然后在请求B接口
总结:在第一个then的请求结束后,在添加一个then,表示请求第二个接口,在第二个then里面写第二个接口的请求方式 axios.get("./a.json").then(res ...
- php curl请求和获取接口数据
curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...
- php(curl请求)测试接口案例
请求测试接口,如下: $data = [']; $result = curlrequest($apiUrl,$data); ){ echo json_encode($result); }else{ e ...
- PHP封装curl的调用接口及常用函数
<?php /** * @desc 封装curl的调用接口,post的请求方式 */ function doCurlPostRequest($url, $requestString, $time ...
- Yii2通过curl调用json-rpc接口
Yii2可以通过json-rpc为前端提供接口数据,通常情况睛会使用异步的形式调用接口,有时也会使用curl调用接口数据. 一.异步调用json-rpc接口 $.ajax({ type: 'POST' ...
- curl模拟调用接口
curl模拟调用接口 1. get请求 curl -i -X GET http://url/bind/agentOnWork/v2?Sig=******* 2. post请求(带头信息以及参数) cu ...
- webapi+Task并行请求不同接口实例
标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...
随机推荐
- BFC(Block Formatting Context)基础分析
W3C官方对于BFC的描述只有3小段,强烈建议想理解BFC的朋友先去看看,链接见文末. 常见的文档流分为:定位流.浮动流.普通流3种.BFC是普通流中的一种. 本文提出3个问题并给出使用BFC来解决这 ...
- 使用pycharm操作django
新建项目,选择已经建立好的虚拟环境 进入指令界面 新建app 添加一些文件和文件夹用于以后存放各种数据 settings设置 TEMPLATES设置 TEMPLATES = [ { 'BACKEND' ...
- Python(函数式编程)
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- 初识JS 基本语法.基本运算符
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...
- day6 字典的增减查删
字典的使用 一.字典的特性 字典是无序的,数据关联性强,键值对,唯一一个映射的数据类型 字典的键必须是可哈希的(不可变的数据类型:字符串,数字,布尔值,元祖),并且是唯一的 不可哈希的(可变的数据类型 ...
- NGUI,多相机共存时,控制显示的元素
当多个相机存在于一个场景中时,我们需要控制某些元素的可见性来达到我们想要的结果. 1:某个相机不需要看见的元素,统一用一个layer来管理 2:选中UIROOT下的相机 在clear flag里面设置 ...
- Javascript中call()和apply()的用法 ----1
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- C/C++中0xcccccccc...
* 0xABABABAB : Used by Microsoft's HeapAlloc() to mark "no man's land" guard bytes after a ...
- js自执行函数&扩展方法
我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件.但是,有时候引入后会碰到变量名或函数名与其它JS代码冲突的问题.那么如何解决这个问题呢?作用域隔离.在JS中,作用域是通过函数来划分 ...
- EasyUI:获取某个dategrid的所有行数据
EasyUI:获取某个dategrid的所有行数据 var rows = $("#grid").datagrid("getRows"); for(var i=0 ...