php请求接口curl,php接口内curl请求其他接口的介绍

本文讲述了在PHP中使用CURL模拟接口请求时遇到的问题,即在B系统接口调用A系统接口进行用户验证时,返回结果中包含了两个接口的返回值。作者通过调试发现是缺少了`CURLOPT_RETURNTRANSFER`参数导致数据直接输出。设置该参数为1后,成功解决了问题,使得B系统接口只返回预期的结果。
摘要由CSDN通过智能技术生成

这篇文章主要介绍了关于php接口内curl请求其他接口的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

今天遇到一个需要写curl的需求,情况是这样的:

同一应用的A系统(购物系统),B系统(答题系统)相互独立,用户数据全部存在于A系统的数据库中,

现在处于B系统的某项操作中,需要在B系统中验证当前请求的人是不是此应用的会员,要验证是不是该应用的

会员,当然是要拿当前用户的标识到数据库比对啊,可是数据库在A系统里啊,当时我就想到了curl,画个图吧:

46a2e469d1490a1d6d62231f1681ff92.png

其实说白了,就是模拟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, 1); //设置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, 1);

最终问题解决了,也算是get到了php的curl参数设置的一个小知识点~~~

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值