這篇文章主要介紹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)