/**
      * @desc 获取设备的监控项实时值
      *
      * @return url请求地址
      * @return method  请求方法(POST,GET,PUT)等

      * @return postfields 上传值

      * @return ssl 是否开启https

      * @return headers 请求头部信息

     */



    public function requestGet($url,$method="POST", $postfields = null, $ssl=false, $headers=array()){
# curl完成初始化
$curl = curl_init();
# curl 选项设置
curl_setopt($curl, CURLOPT_URL, $url); //需要获取的URL地址 $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36';    switch ($method) {
case "POST":
curl_setopt($curl, CURLOPT_POST, true);
if (!empty($postfields)) {
$tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
curl_setopt($curl, CURLOPT_POSTFIELDS, $tmpdatastr);
}
break;
   case "PUT" :
curl_setopt ($curl, CURLOPT_CUSTOMREQUEST, "PUT");
$tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
curl_setopt($curl, CURLOPT_POSTFIELDS,$tmpdatastr);
break;
default:
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
break;
   }    curl_setopt($curl, CURLOPT_USERAGENT, $user_agent); # 在HTTP请求中包含一个"User-Agent: "头的字符串,声明用什么浏览器来打开目标网页 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); # TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。 curl_setopt($curl, CURLOPT_AUTOREFERER, true); # TRUE 时将根据 Location: 重定向时,自动设置 header 中的Referer:信息。 curl_setopt($curl, CURLOPT_TIMEOUT, 30); # 设置超时时间 curl_setopt($curl, CURLOPT_ENCODING, '');
# HTTP请求头中"Accept-Encoding: "的值。 这使得能够解码响应的内容。 支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",会发送所有支持的编码类型 if($headers) {
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); # 设置 HTTP 头字段的数组。格式: array('Content-type: text/plain', 'Content-length: 100')
} # SSL相关,https需开启
if ($ssl) {
curl_setopt($curl, CURLOPT_CAINFO, '/cert/ca.crt'); # CA 证书地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); # 禁用后cURL将终止从服务端进行验证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
# 设置为 1 是检查服务器SSL证书中是否存在一个公用名;设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配;0 为不检查名称。 在生产环境中,这个值应该是 2(默认值)。
# 公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)
}else {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); # 禁用后cURL将终止从服务端进行验证,默认为 true
} curl_setopt($curl, CURLOPT_HEADER, false); # 是否处理响应头,启用时会将头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); # TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。 # 执行 curl 会话
$response = curl_exec($curl); if (false === $response) {
echo '<br>', curl_error($curl), '<br>';
return false;
} #关闭 curl会话
curl_close($curl);
  // file_put_contents('hhh.log', var_export($response,true),FILE_APPEND);
return $response;
}

php curl方法封装的更多相关文章

  1. C#常用字符串加解密方法封装

    C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...

  2. 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释

    在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...

  3. C#方法封装与重构

    C#作为一个完全面向对象的语言,有个特性很重要但是往往会不重视,而不重视的结果就会造成代码杂乱难以解读.维护.这个特性就是封装.      这里不是大谈C#的封装,我只讲一个,关于方法封装的一些问题. ...

  4. 基于promise对小程序http请求方法封装

    原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是 ...

  5. AJAX原理解析与兼容方法封装

    AJAX常用参数 AJAX对象兼容 AJAX对象方法与属性 AJAX封装兼容方法源码 AJAX全称Asynchronous JavaScript and XML(异步的JavaScript与XML), ...

  6. 微信access_token请求之简单缓存方法封装

    还有东西要搞,就直接上代码 function.php <?php // 一个好玩的 curl 类 // https://github.com/metowolf/Meting/blob/maste ...

  7. 通用ajax请求方法封装,兼容主流浏览器

    ajax简单介绍 没有AJAX会怎么样?普通的ASP.Net每次运行服务端方法的时候都要刷新当前页面. 假设没有AJAX,在youku看视频的过程中假设点击了"顶.踩".评论.评论 ...

  8. appium安卓自动化的 常用driver方法封装

    appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...

  9. 【前端学习笔记04】JavaScript数据通信Ajax方法封装

    //Ajax 方法封装 //设置数据格式 function setData(data){ if(!data){ return ''; } else{ var arr = []; for(k in da ...

  10. appium+python自动化24-滑动方法封装(swipe)

    swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, ...

随机推荐

  1. C# System.Threading.Timer 详解及示例

    前言 定时器功能在日常开发中也是比较常用的,在 .Net 中实际上总共有五种定时器,分别是:System.Timers.Timer.System.Threading.Timer.System.Wind ...

  2. Prometheus&Alertmanager告警推送

    前言 尽管可以通过可视化数据监控系统运行状态,但我们无法时刻关注系统运行,因此需要一些实时运行的工具能够辅助监控系统运行,当系统出现运行问题时,能够通知我们,以此确保系统稳定性,告警便是作为度量指标监 ...

  3. LG P2839 [国家集训队]middle

    \(\text{Solution}\) 不考虑起点区间和终点区间的限制,求区间中位数 可以二分中位数,大于等于中位数的位置赋为 \(1\),小于的位置赋 \(-1\) 当区间和大于等于 \(0\) 时 ...

  4. 2022 CSP-S 游记

    \(9.26\):开坑. 没报 J 组主要是因为 J 比较垃圾,去抢小朋友的一等没什么意思. 初赛 刚拿到试卷就直接懵了,这 tm 是给人做的题?宇宙射线是什么奇妙东西,还有基数排序我根本不会啊,这个 ...

  5. Swiper第一页与最后一页禁止滑动

    resistanceRatio抵抗率.边缘抵抗力的大小比例.值越小抵抗越大越难将slide拖离边缘,0时完全无法拖离. mounted: function() { let _this = this; ...

  6. .NET周报 【2月第4期 2023-02-25】

    国内文章 .NET微服务系统迁移至.NET6.0的故事 https://www.cnblogs.com/InCerry/p/microservice-migration-net-6.html 本次迁移 ...

  7. 桌面应用(.exe)设置窗口默认最大化、全屏(electron)

    设置窗口默认最大化.全屏(electron) 一.默认最大化 win = new BrowserWindow({show: false}) win.maximize() win.show() 二.默认 ...

  8. 前端JavaScript深拷贝的三种方法,看了不后悔!!!

    深拷⻉ 深拷⻉开辟⼀个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改⼀个对象的属性,不会 改变另⼀个对象的属性 常⻅的深拷⻉⽅式有: _.cloneDeep() jQuery.extend( ...

  9. oracle锁表,java代码修改方式如下

    select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.o ...

  10. Java面向对象之static关键字详解

    static关键字详解 package OOP.Demo10; public class Person { //2:赋初值 { System.out.println("匿名代码块" ...