PHP curl get post 请求的封装函数示例【get、post、put、delete等请求类型】

作者:夏已微凉、 时间:2023-05-25 01:24:18 

一、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 (!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); //设置超时时间: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 (!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); //设置超时时间: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 (!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); //设置超时时间: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为主。 

来源:https://blog.csdn.net/qq_36025814/article/details/116981144

标签:php,curl,post,get
0
投稿

猜你喜欢

  • 界面内容优化的层次

    2007-11-06 13:07:00
  • Mootools 1.2教程(8)——输入过滤第一部分(数字)

    2008-11-27 13:01:00
  • sqlserver通用的删除服务器上的所有相同后缀的临时表

    2012-06-06 20:07:34
  • 初衷和结果

    2009-02-23 12:52:00
  • SQL Server 数据库故障修复顶级技巧之一

    2010-05-01 18:49:00
  • 去掉运行JavaScript时IE产生的警告栏

    2008-09-11 18:07:00
  • AJAX缓存问题的两种解决方法(IE)

    2008-05-02 20:57:00
  • DW MX 2004新功能:加密FTP

    2009-09-13 18:42:00
  • 精细讲述SQL Server数据库备份多种方法

    2009-01-13 13:33:00
  • 数据库连接字符串的常见问题和解决方法

    2008-11-28 15:16:00
  • js检查全角字符正则表达式[\\uFE30-\\uFFA0]

    2008-10-30 12:39:00
  • MySQL表设计优化与索引 (八)

    2010-10-25 19:46:00
  • ajax Google PageRank3(PR值)查询源代码

    2007-11-04 13:31:00
  • 浅谈MySQL的存储引擎之表类型存储

    2011-05-05 08:10:00
  • 如何用ASP发送HTML格式的邮件?

    2010-06-11 19:41:00
  • ASP关于SQL插入数据后获得当前ID

    2010-01-24 19:55:00
  • 清除浮动的最简写法

    2009-03-30 15:58:00
  • 天极网页版式设计的思考

    2008-01-18 12:44:00
  • 对“关于购物车的想法”的一些回复

    2009-03-10 18:15:00
  • asp 关键词高亮显示(不区分大小写)

    2011-04-07 10:55:00
  • asp之家 网络编程 m.aspxhome.com