背景:我与同事之间互相调用API,进行数据处理,并返回处理结果
交互:我传递一个图片信息过去,他那边给我返回一个识别图像结果的json对象。
方法:使用php的自带curl函数
详情:
一.开启扩展服务:打开php.ini文件,把 “;extension=php_curl.dll” 前面的;去掉并重启apache
二.实现代码:$filePath = '@C:/Program Files (x86)/EasyPHP/data/localweb/SmartCampus/Public/Uploads/bindimages' . "/" . $date . "/" . $photo;
$postUrl = 'http://localhost/SmartCampus/AddImagesUpload.php';
// 1. 初始化
$ch = curl_init();
//post发送的参数数组
$postData = array(
//'loginfield' => 'username',
//'username' => 'ybb',
//'password' => '123456',
'file' => $filePath
);
// 2. 设置选项,包括URL
curl_setopt($ch, CURLOPT_HEADER, false);
//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_URL, $postUrl);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
//获取各种运行中信息,便于调试
$curlInfo = curl_getinfo($ch);
// 4. 释放curl句柄
curl_close($ch);
$res=json_decode($output,true);
三.注意:
1.json_decode()函数的第二个参数为true时,返回解码后的数组,不是解码后的对象
2.加横线部分的CURL设置似乎有顺序要求,如需获取CURL返回值 需把“ curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);”这两行放在前面,放在后面则返回bool值。