最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHPcurlgetpost请求的封装函数示例【get、post、put、delete等请求类型】
时间:2026-09-22 18:20:01 编辑:袖梨 来源:一聚教程网
这篇文章主要介绍了PHPcurlgetpost请求的封装函,包含了php使用curl针对get、post、put、delete等请求类型进行封装的操作技巧,以及CURLOPT_CUSTOMREQUEST控制DELETE、PUT请求类型的实现方法,需要的朋友可以参考下
一、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); //设置超时时间:30scurl_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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求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,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30scurl_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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求headercurl_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); //定义提交的数据}curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30scurl_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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求headercurl_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,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30scurl_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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求headercurl_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,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30scurl_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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求headercurl_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;}
六、计算请求运行时间
可以在接口请求日志信息中记录运行时间,以便以后排查问题(程序执行缓慢,是哪个接口拖了时间)代码$startTime = microtime(true);for ($i = 0; $i < 9999999; $i++) {};$endTime = microtime(true);$runTime = sprintf('%.6f', ($endTime-$startTime));echo "执行时间为:{$runTime} s";die;打印执行时间为:0.202176 s
PS:针对常见的post、get、put、delete等请求方式,笔者经常使用postman或者ApiFox进行请求测试,并且通常前后端传输数据以json为主。
相关文章
- phpstorm断点调试方法图文详解 09-22
- 使用Canal实现PHP应用程序与MySQL数据库的实时数据同步 09-22
- IIS+PHP添加对webp格式图像的支持配置方法 09-22
- PHP读取和写入CS5文件的示例代码 09-22
- 怎样开启phpStudy服务器 09-22
- 三分钟掌握PHP操作数据库 09-22