PHP curl get post 请求的封装函数示例【get、post、put、delete等请求类型】
发布:smiling 来源: PHP粉丝网 添加日期:2023-07-11 17:58:12 浏览: 评论:0
这篇文章主要介绍了PHP curl get post 请求的封装函,包含了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); //设置超时时间: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 时追踪句柄的请求字符串,从 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); //设置超时时间: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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求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 (!emptyempty($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); //设置超时时间: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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求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 (!emptyempty($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); //设置超时时间: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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求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 (!emptyempty($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); //设置超时时间: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 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求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;
- }
六、计算请求运行时间
可以在接口请求日志信息中记录运行时间,以便以后排查问题(程序执行缓慢,是哪个接口拖了时间)代码:
- $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为主。
Tags: curl get post put delete
- 上一篇:php中关于hook钩子函数底层理解
- 下一篇:最后一页
相关文章
- ·php curl_init函数用法(2013-11-28)
- ·php使用curl函数提示Call to undefined function curl_init()(2013-12-04)
- ·php提示:Call to undefined function curl_init(2013-12-04)
- ·cURL函数库错误码说明之PHP curl_errno函数(2013-12-05)
- ·php file_get_contents与curl()函数对比(2014-01-16)
- ·PHP CURL用法详解(2014-01-17)
- ·php CURL函数入门教程详解(2014-02-22)
- ·php中curl和file_get_content函数抓页面对比(2014-06-21)
- ·php curl_init函数用法详解说明(2014-07-12)
- ·php中file_get_contents和curl两个函数用法(2014-08-02)
- ·php curl用法(2014-08-05)
- ·PHP CURL模拟GET及POST函数代码(2014-09-09)
- ·PHP curl_setopt函数用法介绍(2014-09-14)
- ·常用的curl发包函数(2014-10-22)
- ·PHP怎么开启CURL函数?开启CURL函数教程(2015-04-08)
- ·php中file_get_contents代替使用curl示例(2015-04-09)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)