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 請求效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM