文章詳情頁
PHP curl get post 請求的封裝函數(shù)示例【get、post、put、delete等請求類型】
瀏覽:109日期:2022-06-10 16:51:11
一、get
//get請求 function getUrl($url, $header = []) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET, true); if ($header) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間:30s curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl檢測 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。- curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 時(shí)追蹤句柄的請求字符串,從 PHP 5.1.3 開始可用。這個(gè)很關(guān)鍵,就是允許你查看請求header $output = curl_exec($ch); if (!$output) { //echo "request $url fail:", (array)curl_error($ch); //記錄日志 } curl_close($ch); // echo "request $url success:" . json_encode(array($url, $header, $output), true); //記錄日志 return $output; }
二、del
//del請求 function delUrl($url, $header = []) { $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //為true,則會(huì)跟蹤爬取重定向頁面,否則,不會(huì)跟蹤重定向頁面 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間:30s curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl檢測 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。- curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 時(shí)追蹤句柄的請求字符串,從 PHP 5.1.3 開始可用。這個(gè)很關(guān)鍵,就是允許你查看請求header curl_setopt($ch, CURLOPT_URL, $url); $output = curl_exec($ch); if (!$output) { //echo "request $url fail:", (array)curl_error($ch); //記錄日志 } curl_close($ch); // echo "request $url success:" . json_encode(array($url, $header, $output), true); //記錄日志 return $output; }
三、put
//put請求 function putUrl($url, $data = [], $header = []) { $ch = curl_init(); if (!empty($data)) { curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //定義提交的數(shù)據(jù) } curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //為true,則會(huì)跟蹤爬取重定向頁面,否則,不會(huì)跟蹤重定向頁面 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間:30s curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl檢測 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。- curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 時(shí)追蹤句柄的請求字符串,從 PHP 5.1.3 開始可用。這個(gè)很關(guān)鍵,就是允許你查看請求header curl_setopt($ch, CURLOPT_URL, $url); $output = curl_exec($ch); if (!$output) { //echo "request $url fail:", (array)curl_error($ch); //記錄日志 } curl_close($ch); // echo "request $url success:" . json_encode(array($url, $header, $output), true); //記錄日志 return $output; }
四、post
//post請求 function postUrl($url, $data, $header = []) { $ch = curl_init(); if (!empty($data)) { curl_setopt($ch, CURLOPT_POST,true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //為true,則會(huì)跟蹤爬取重定向頁面,否則,不會(huì)跟蹤重定向頁面 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間:30s curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl檢測 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。- curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 時(shí)追蹤句柄的請求字符串,從 PHP 5.1.3 開始可用。這個(gè)很關(guān)鍵,就是允許你查看請求header curl_setopt($ch, CURLOPT_URL, $url); $output = curl_exec($ch); if (!$output) { //echo "request $url fail:", (array)curl_error($ch); //記錄日志 } curl_close($ch); // echo "request $url success:" . json_encode(array($url, $header, $output), true); //記錄日志 return $output; }
五、post json
//post json 請求 function postJsonUrl($url, $data, $header = []) { $data = json_encode($data); $ch = curl_init(); if (!empty($data)) { curl_setopt($ch, CURLOPT_POST,true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } $header[]="Content-Type: application/json; charset=utf-8"; curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //為true,則會(huì)跟蹤爬取重定向頁面,否則,不會(huì)跟蹤重定向頁面 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間:30s curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl檢測 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出。- curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 時(shí)追蹤句柄的請求字符串,從 PHP 5.1.3 開始可用。這個(gè)很關(guān)鍵,就是允許你查看請求header curl_setopt($ch, CURLOPT_URL, $url); $output = curl_exec($ch); if (!$output) { //echo "request $url fail:", (array)curl_error($ch); //記錄日志 } curl_close($ch); // echo "request $url success:" . json_encode(array($url, $header, $output), true); //記錄日志 return $output; }
六、計(jì)算請求運(yùn)行時(shí)間
- 可以在接口請求日志信息中記錄運(yùn)行時(shí)間,以便以后排查問題(程序執(zhí)行緩慢,是哪個(gè)接口拖了時(shí)間)
- 代碼
$startTime = microtime(true); for ($i = 0; $i < 9999999; $i++) { }; $endTime = microtime(true); $runTime = sprintf("%.6f", ($endTime-$startTime)); echo "執(zhí)行時(shí)間為:{$runTime} s"; die;
- 打印
執(zhí)行時(shí)間為:0.202176 s
PS:針對常見的post、get、put、delete等請求方式,筆者經(jīng)常使用postman或者ApiFox進(jìn)行請求測試,并且通常前后端傳輸數(shù)據(jù)以json為主。
標(biāo)簽:
PHP
上一條:使用Canal實(shí)現(xiàn)PHP應(yīng)用程序與MySQL數(shù)據(jù)庫的實(shí)時(shí)數(shù)據(jù)同步下一條:IIS+PHP添加對webp格式圖像的支持配置方法
相關(guān)文章:
1. phpstudy apache開啟ssi使用詳解2. PHP高級(jí)OOP技術(shù)演示3. php中l(wèi)aravel調(diào)度執(zhí)行錯(cuò)誤解決方法4. ThinkPHP5 通過ajax插入圖片并實(shí)時(shí)顯示(完整代碼)5. php字符串函數(shù) str類常見用法示例6. php ZipArchive解壓縮實(shí)現(xiàn)后臺(tái)管理升級(jí)問題詳解7. PHP執(zhí)行外部命令的函數(shù):exec(), system(), passthru(), shell_exec()8. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)9. PHP AOP教程案例10. PHP數(shù)組array類常見操作示例
排行榜
