Curl是一个库,它允许你通过各种协议和各种不同的服务器进行连接和通讯
a.php
<?php
function curlRequest($url,$data=''){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不验证证书
if(!empty($data)){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//如果返回的不是json数组,$data要用http_build_query()处理一下
}
$output=curl_exec($ch);
$errno=curl_errno($ch);
if($errno!=0) return false;
curl_close($ch);
return json_decode($output,true);//将json数据转换为数组,如果不加true参数,会返回一个stdClass对象
}
//测试
$url="http://www.luoqiusa.top/wx/b.php";
$data=array('name'=>'yolo');
$res=curlRequest($url,$data);
print_r($res);
输出为:
b.php
<?php
if(isset($_POST['name'])){
$jsonObj='{"name":"yolo","age":23}';
print_r($jsonObj); //注意这里一定要输出,不能用return,低级错误
}
说明:主要是测试post请求,a.php请求b.php,如果b.php收到了post过来的数据,则返回一个json字符串
知识点:
1、$jsonObj='{"name":"yolo","age":23}';
- echo gettype($jsonObj); //输出string
- $jsonObj=json_decode($jsonObj);
echo gettype($jsonObj); //输出object - $jsonObj=json_decode($jsonObj,true);
echo gettype($jsonObj); //输出array
简而言之,json_decode($jsonObj,true)的第二个参数true将json字符串转换为数组
2、如果b页面返回的不是json数据,那么a页面传入的data要用http_build_query()处理一下