TP5.1 簡單利用CURL實現請求


首先封裝一個 CURL 方法,可以不用理解代碼

class MyCurl extends Base
{
    /**
     * http請求
     *
     * @param $url     //請求地址
     * @param $params  //鏈接后拼接的參數數組
     * @param $method  //get/post
     * @param $header  //請求頭數組
     */
    function httpCurl($url, $params, $method = 'GET', $header = array(), $multi = false)
    {
        date_default_timezone_set('PRC');  //設置默認時區
        $opts = array(                                     //請求參數
            CURLOPT_TIMEOUT => 30,
            CURLOPT_RETURNTRANSFER => 1,       //將curl_exec()獲取的信息以文件流的形式返回
            CURLOPT_SSL_VERIFYPEER => false,   //不對認證證書來源的檢查
            CURLOPT_SSL_VERIFYHOST => false,   //不從證書中檢查SSL加密算法是否存在
            CURLOPT_HTTPHEADER => $header,     //Content-Type類型
            CURLOPT_COOKIESESSION => true,
            CURLOPT_FOLLOWLOCATION => 1,      // 使用自動跳轉
            CURLOPT_COOKIE => session_name() . '=' . session_id(),
        );

        /* 根據請求類型設置特定參數 */
        switch (strtoupper($method)) {
            case 'GET':
                // 鏈接后拼接參數 如xxx.com?key = value & key2=value
                $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);//將數組變成key=value&key2=value
                break;
            case 'POST':                //判斷是否傳輸文件
                $params = $multi ? $params : http_build_query($params); //同上
                $opts[CURLOPT_URL] = $url;
                $opts[CURLOPT_POST] = 1;
                $opts[CURLOPT_POSTFIELDS] = $params;
                break;
            default:
                throw new Exception('不支持的請求方式!');
        }

        /* 初始化並執行curl請求 */
        $ch = curl_init();
        curl_setopt_array($ch, $opts); // 數組形式設置URL和其他參數
        $data = curl_exec($ch);        // URL抓取並把它傳遞給瀏覽器
        $error = curl_error($ch);
        curl_close($ch);
        if ($error)
            return $this->create('','錯誤信息:'.$error,400);
        $data = json_decode($data, true);
        return $data;
    }


    /**
     * xml/json數據的POST請求
     *
     * @param $url     //請求地址
     * @param $xmlData  //xml 或 json數據
     */
    public function PostData($url,$xmlData)
    {
        $curl = curl_init();
        $param[CURLOPT_URL] = $url;
        $param[CURLOPT_HEADER] = false;
        $param[CURLOPT_RETURNTRANSFER] = true;
        $param[CURLOPT_FOLLOWLOCATION] = true;
        $param[CURLOPT_POST] = true;
        $param[CURLOPT_POSTFIELDS] = $xmlData;
        $param[CURLOPT_SSL_VERIFYPEER] = false;
        $param[CURLOPT_SSL_VERIFYHOST] = false;
        curl_setopt_array($curl,$param); //傳參數
        $data = curl_exec($curl);       //執行命令
        curl_close($curl);
        return $data;
    }
}

 

測試 微信小程序通過code 獲取 openId 的過程

public function test(Request $request)
    {
        $url = App::config('xcxKey_url'); //請求地址

        //從微信服務器換取 openid 傳遞的參數 AppId、AppSecret、Code、grant_type、connect_redirect
        $params['appid'] = App::config('xcx_appid');
        $params['secret'] = App::config('xcx_secret');
        $params['js_code'] = $request::param('code');
        $params['grant_type'] = 'authorization_code';  
        $params['connect_redirect'] = 1;                

        return (new MyCurl)->httpCurl($url, $params, 'POST');
    }

 

結果:

 


免責聲明!

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



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