背景:我與同事之間互相調用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值。