翼度科技»论坛 编程开发 PHP 查看内容

PHP curl get post 请求的封装函数示例【get、post、p

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
一、get
  1. //get请求
  2. function getUrl($url, $header = [])
  3. {
  4.     $ch = curl_init();
  5.     curl_setopt($ch, CURLOPT_URL, $url);
  6.     curl_setopt($ch, CURLOPT_HTTPGET, true);
  7.     if ($header) {
  8.         curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  9.     }
  10.     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s
  11.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测
  12.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。-
  14.     curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header
  15.     $output = curl_exec($ch);
  16.     if (!$output) {
  17. //        echo "request $url fail:", (array)curl_error($ch); //记录日志
  18.     }
  19.     curl_close($ch);
  20. //    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志
  21.     return $output;
  22. }
复制代码
二、del
  1. //del请求
  2. function delUrl($url, $header = []) {
  3.     $ch = curl_init();
  4.     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
  5.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面
  6.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  7.     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s
  8.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测
  9.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  10.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。-
  11.     curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header
  12.     curl_setopt($ch, CURLOPT_URL, $url);
  13.     $output = curl_exec($ch);
  14.     if (!$output) {
  15. //        echo "request $url fail:", (array)curl_error($ch); //记录日志
  16.     }
  17.     curl_close($ch);
  18. //    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志
  19.     return $output;
  20. }
复制代码
三、put
  1. //put请求
  2. function putUrl($url, $data = [], $header = []) {
  3.     $ch = curl_init();
  4.     if (!empty($data)) {
  5.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //定义提交的数据
  6.     }
  7.     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
  8.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面
  9.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  10.     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s
  11.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测
  12.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。-
  14.     curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header
  15.     curl_setopt($ch, CURLOPT_URL, $url);
  16.     $output = curl_exec($ch);
  17.     if (!$output) {
  18. //        echo "request $url fail:", (array)curl_error($ch); //记录日志
  19.     }
  20.     curl_close($ch);
  21. //    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志
  22.     return $output;
  23. }
复制代码
四、post
  1. //post请求
  2. function postUrl($url, $data, $header = [])
  3. {
  4.     $ch = curl_init();
  5.     if (!empty($data)) {
  6.         curl_setopt($ch, CURLOPT_POST,true);
  7.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  8.     }
  9.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面
  10.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  11.     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s
  12.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测
  13.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  14.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。-
  15.     curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header
  16.     curl_setopt($ch, CURLOPT_URL, $url);
  17.     $output = curl_exec($ch);
  18.     if (!$output) {
  19. //        echo "request $url fail:", (array)curl_error($ch); //记录日志
  20.     }
  21.     curl_close($ch);
  22. //    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志
  23.     return $output;
  24. }
复制代码
五、post json
  1. //post json 请求
  2. function postJsonUrl($url, $data, $header = [])
  3. {
  4.     $data = json_encode($data);
  5.     $ch = curl_init();
  6.     if (!empty($data)) {
  7.         curl_setopt($ch, CURLOPT_POST,true);
  8.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  9.     }
  10.     $header[]='Content-Type: application/json; charset=utf-8';
  11.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面
  12.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  13.     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s
  14.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测
  15.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  16.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。-
  17.     curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header
  18.     curl_setopt($ch, CURLOPT_URL, $url);
  19.     $output = curl_exec($ch);
  20.     if (!$output) {
  21. //        echo "request $url fail:", (array)curl_error($ch); //记录日志
  22.     }
  23.     curl_close($ch);
  24. //    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志
  25.     return $output;
  26. }
复制代码
六、计算请求运行时间


  • 可以在接口请求日志信息中记录运行时间,以便以后排查问题(程序执行缓慢,是哪个接口拖了时间)
  • 代码
  1. $startTime = microtime(true);
  2.         for ($i = 0; $i < 9999999; $i++) {
  3.         };
  4.         $endTime = microtime(true);
  5.         $runTime = sprintf('%.6f', ($endTime-$startTime));
  6.         echo "执行时间为:{$runTime} s";
  7.         die;
复制代码

  • 打印
  1. 执行时间为:0.202176 s
复制代码
PS:针对常见的post、get、put、delete等请求方式,笔者经常使用postman或者ApiFox进行请求测试,并且通常前后端传输数据以json为主。

来源:https://www.jb51.net/article/281425.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具