控制器進行請求
// 請求的網址 $url='https://restapi.amap.com/v3/geocode/geo'; // 請求的參數 $data=[ 'address'=>$address, 'output'=>'JSON' , 'key'=>'57f43caedd2e585c74778b11238f721d' ]; // 調用 $res=Curl::get($url,$data); print_r($res['geocodes'][0]);
封裝get 請求(注銷的是原代嗎,請求到的是一個string)所以這里我接入了一個菜鳥教程中的curl請求
https://www.runoob.com/php/php-ref-curl.html
class Curl { /** * @brief get請求 * @param $url 請求的url * @param array $param 請求的參數 * @param int $timeout 超時時間 * @param int $log 是否啟用日志 * @return mixed */ public static function get($url, $param=array(), $timeout=10, $log=1) { //將參數進行合並 if (is_array($param)) { $url = $url . '?' . http_build_query($param); } $headerArray =array("Content-type:application/json;","Accept:application/json"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray); $output = curl_exec($ch); curl_close($ch); $output = json_decode($output,true); return $output; // curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 允許 cURL 函數執行的最長秒數 // $data = curl_exec($ch); // if ($log) { // $data .= "\r\n"; // $data .= self::logInfo($ch, $param, $data); // } // curl_close($ch); // $output = json_decode($data,true); //// 數據返回 // return $output; } /** * @brief post請求 * @param $url 請求的url地址 * @param array $param 請求的參數 * @param int $log 是否啟用日志 * @return mixed */ public static function post($url, $param=array(), $header=array(), $timeout=10, $log=1) { $ch = curl_init(); if (is_array($param)) { $urlparam = http_build_query($param); } else if (is_string($param)) { //json字符串 $urlparam = $param; } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //設置超時時間 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回原生的(Raw)輸出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_POST, 1); //POST curl_setopt($ch, CURLOPT_POSTFIELDS, $urlparam); //post數據 if ($header) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } $data = curl_exec($ch); if ($log) { $data .= "\r\n"; $data .= self::logInfo($ch, $param, $data); } curl_close($ch); return $data; } /** * 請求信息記錄日志 * @param $ch curl句柄 * @param $request 請求參數 * @param $response 響應結果 */ private static function logInfo($ch, $request, $response) { $info = curl_getinfo($ch); $resultFormat = "耗時:[%s] 返回狀態:[%s] 請求的url[%s] 請求參數:[%s] 響應結果:[%s] 大小:[%s]kb 速度:[%s]kb/s"; $resultLogMsg = sprintf($resultFormat, $info['total_time'], $info['http_code'], $info['url'], var_export($request,true),var_export($response,true), $info['size_download']/1024, $info['speed_download']/1024); return $resultLogMsg; }
get 請求效果圖