php中curl如何使用post

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

成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè),成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)公司已向超過(guò)千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

php curl使用post的方法:首先啟動(dòng)一個(gè)CURL會(huì)話(huà);然后對(duì)認(rèn)證證書(shū)來(lái)源進(jìn)行檢查;接著從證書(shū)中檢查SSL加密算法是否存在;最后以POST方式請(qǐng)求https協(xié)議接口即可。

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版,DELL G3電腦

php curl怎么使用post方法?

PHP:CURL分別以GET、POST方式請(qǐng)求HTTPS/http協(xié)議接口api

  • curl以GET方式請(qǐng)求https協(xié)議接口

  function curl_get_https($url){
        $curl = curl_init(); // 啟動(dòng)一個(gè)CURL會(huì)話(huà)
        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); // 對(duì)認(rèn)證證書(shū)來(lái)源的檢查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 從證書(shū)中檢查SSL加密算法是否存在
        $tmpInfo = curl_exec($curl); //返回api的json對(duì)象
        //關(guān)閉URL請(qǐng)求
        curl_close($curl);
        return $tmpInfo;    //返回json對(duì)象
    }
  • curl以POST方式請(qǐng)求https協(xié)議接口

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

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

說(shuō)明 :前提是打開(kāi)php的curl開(kāi)關(guān)和服務(wù)器的ssl_module,不然不能正常使用哦。

以上是“php中curl如何使用post”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:php中curl如何使用post
當(dāng)前URL:http://muchs.cn/article46/pdjchg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、微信小程序、虛擬主機(jī)、品牌網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)