摘要:的功能提供了很多函數,需要將這些函數按特定的步驟組合到一起,我們先來了解下建立請求的基本步驟。代碼如下我們可以通設置函數的不同參數,可以獲得不同的結果,這也是擴展的強大之處。函數的常用參數選項具體可查閱官方文檔,此處就不列舉。
PHP的curl功能提供了很多函數,需要將這些函數按特定的步驟組合到一起,我們先來了解下PHP建立curl請求的基本步驟。
$ch = curl_init(); // 創建一個新的CURL資源賦給變量$ch
curl_setopt($ch, CURLOPT_URL, $url); // 設置URL
$response = curl_exec($ch); // 執行,獲取URL并輸出到瀏覽器
curl_close($ch); // 釋放資源
如果我們希望獲取內容但不輸出,可以使用 CURLOPT_RETURNTRANSFER 參數,并設置其值為非0或者true值。代碼如下:curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
我們可以通設置函數curl_setopt()的不同參數,可以獲得不同的結果,這也是CURL擴展的強大之處。curl_setopt()函數的常用參數選項具體可查閱官方文檔,此處就不列舉。
下面是我常用的curl get和post請求的方法:
get請求:
public function httpGet(string $url = "") { // 記錄請求信息的日志 // todo try { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); //https 請求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $response = curl_exec($ch); $errorCode = curl_errno($ch); curl_close($ch); if (!empty($errorCode)) { // 可記錄錯誤碼日志 return null; } // 記錄返回結果日志 return $response; } catch (Exception $e) { $errorLog = [ "msg" => $e->getMessage(), "trace" => $e->getTraceAsString(), "data" => [ "url" => $url, ] ]; // 記錄錯誤日志 return null; } }
POST請求:
public function httpPost(string $url = "", array $data = []) { // 記錄請求信息的日志 // todo try { $jsonData = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 60); curl_setopt($curl, CURLOPT_HTTPHEADER, [ "Content-Type: application/json; charset=utf-8", "Content-Length:" . strlen($jsonData) ]); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //https 請求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } $result = curl_exec($curl); $errorCode = curl_errno($curl); curl_close($curl); if (!empty($errorCode)) { // 可記錄錯誤碼日志 return null; } // 記錄返回結果日志 return json_decode($result, true); } catch (Exception $e) { $errorData = [ "msg" => $e->getMessage(), "trace" => $e->getTraceAsString(), "data" => [ "url" => $url, "postData" => $data ] ]; // 記錄錯誤日志 return null; } }
歡迎各位朋友進行交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29899.html
摘要:今天跑腳本遇到一個奇怪的問題,就是請求到后期會出現程序阻塞卡死,無異常無響應,一直掛起,腳本也不會自動結束。設置允許執行的最長秒數。增加執行超時后的請求設置函數。從錯誤類型中,看到確實是有一些請求在秒內未能執行完畢。 今天跑腳本遇到一個奇怪的問題,就是cURL請求到后期會出現程序阻塞卡死,無異常無響應,一直掛起,腳本也不會自動結束。跟對方溝通后說,哥們兒,是不是你們的程序有問題啊,這邊...
QueryList 簡介 QueryList是一套簡潔、優雅、可擴展的PHP采集工具(爬蟲),基于phpQuery。 特性 擁有與jQuery完全相同的CSS3 DOM選擇器 擁有與jQuery完全相同的DOM操作API 擁有通用的列表采集方案 擁有強大的HTTP請求套件,輕松實現如:模擬登陸、偽造瀏覽器、HTTP代理等意復雜的網絡請求 擁有亂碼解決方案 擁有強大的內容過濾功能,可使用jQue...
摘要:目前支持和協議。除此以外,還能在可能的字符編碼之間相互進行編碼轉換。如果啟用了這個功能,輸入字符編碼可能將自動轉換成。這些可能在未來增加。 前言 PHP7即將在12月3日正式發布,而RC8是已經差不多穩定了的版本,后續的GA版本主要都是在修復bug,所以為了未來開發環境的升級,準備嘗試安裝一下。 PHP7.0.0將在12月3日正式發布,但是12月2日時github已經發布出PHP-7...
閱讀 1998·2021-09-30 09:53
閱讀 1841·2021-09-24 09:48
閱讀 1755·2019-08-30 14:01
閱讀 2170·2019-08-29 18:35
閱讀 1249·2019-08-26 18:27
閱讀 2979·2019-08-26 12:12
閱讀 942·2019-08-23 17:16
閱讀 932·2019-08-23 15:31