1. 程式人生 > 其它 >curl get請求介面

curl get請求介面

控制器進行請求

//        請求的網址
        $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 請求效果圖