溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中curl如何使用post

發布時間:2021-06-18 09:35:53 來源:億速云 閱讀:1271 作者:小新 欄目:編程語言

這篇文章主要介紹php中curl如何使用post,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

php curl使用post的方法:首先啟動一個CURL會話;然后對認證證書來源進行檢查;接著從證書中檢查SSL加密算法是否存在;最后以POST方式請求https協議接口即可。

本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦

php curl怎么使用post方法?

PHP:CURL分別以GET、POST方式請求HTTPS/http協議接口api

  • curl以GET方式請求https協議接口

  function curl_get_https($url){
        $curl = curl_init(); // 啟動一個CURL會話
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 從證書中檢查SSL加密算法是否存在
        $tmpInfo = curl_exec($curl); //返回api的json對象
        //關閉URL請求
        curl_close($curl);
        return $tmpInfo;    //返回json對象
    }
  • curl以POST方式請求https協議接口

    function curl_post_https($url,$data){ // 模擬提交數據函數
        $curl = curl_init(); // 啟動一個CURL會話
        curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);              // 對認證證書來源的檢查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);              // 從證書中檢查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬用戶使用的瀏覽器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的數據包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
        curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 執行操作
        if (curl_errno($curl)) {
            echo 'Errno'.curl_error($curl);//捕抓異常
        }
        curl_close($curl); // 關閉CURL會話
        return $tmpInfo; // 返回數據,json格式
    }
  • 封裝的通用的接口

/**
* CURL GET || post請求
* @desc: GET與post都通用
* @author: Sindsun
* @email: 2361313833@qq.com
* @date: 2019年4月24日上午10:54:31
* @param: $url 請求的地址
*       $isPostRequest 默認true是GET請求,否則是POST請求
*       $data array  請求的參數
*       $certParam  array  ['cert_path']    ['key_path']
* @return:
*/
function curl_http($url, $isPostRequest=false, $data=[], $header=[], $certParam=[]){ // 模擬提交數據函數
    $curlObj = curl_init(); // 啟動一個CURL會話
    //如果是POST請求
    if( $isPostRequest ){
        curl_setopt($curlObj, CURLOPT_POST, 1); // 發送一個常規的Post請求
        curl_setopt($curlObj, CURLOPT_POSTFIELDS, http_build_query($data)); // Post提交的數據包
    }else{  //get請求檢查是否拼接了參數,如果沒有,檢查$data是否有參數,有參數就進行拼接操作
        $getParamStr = '';
        if(!empty($data) && is_array($data)){
            $tmpArr = [];
            foreach ($data as $k=>$v){
                $tmpArr[] = $k . '=' . $v;
            }
            $getParamStr = implode('&', $tmpArr);
        }
        //檢查鏈接中是否有參數
        $url .= strpos($url, '?') !== false ? '&' . $getParamStr : '?' . $getParamStr;
    }
    curl_setopt($curlObj, CURLOPT_URL, $url); // 要訪問的地址
    //檢查鏈接是否https請求
    if(strpos($url, 'https') !== false){
        //設置證書
        if( !empty($certParam) && isset($certParam['cert_path']) && isset($certParam['key_path']) ){
            curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
            curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 2); // 從證書中檢查SSL加密算法是否存在
            //設置證書
            //使用證書:cert 與 key 分別屬于兩個.pem文件
            curl_setopt($curlObj, CURLOPT_SSLCERTTYPE,'PEM');
            curl_setopt($curlObj, CURLOPT_SSLCERT, $certParam['cert_path']);
            curl_setopt($curlObj, CURLOPT_SSLKEYTYPE,'PEM');
            curl_setopt($curlObj, CURLOPT_SSLKEY, $certParam['key_path']);
        }else{
            curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
            curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 0); // 從證書中檢查SSL加密算法是否存在
        }
    }
    // 模擬用戶使用的瀏覽器
    if(isset($_SERVER['HTTP_USER_AGENT'])){
        curl_setopt($curlObj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    }
    curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
    curl_setopt($curlObj, CURLOPT_AUTOREFERER, 1); // 自動設置Referer
    curl_setopt($curlObj, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
    curl_setopt($curlObj, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
    curl_setopt($curlObj, CURLOPT_HTTPHEADER, $header);   //設置頭部
    curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
    $result = curl_exec($curlObj); // 執行操作
    if ( curl_errno($curlObj) ) {
        $result = 'error: '.curl_error($curlObj);//捕抓異常
    }
    curl_close($curlObj); // 關閉CURL會話
    return $result; // 返回數據,json格式
}

說明 :前提是打開php的curl開關和服務器的ssl_module,不然不能正常使用哦。

以上是“php中curl如何使用post”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女