/**
      * @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. 【TS】基础类型

    在ts中定义基础类型, 语法 : let 变量名 : 数据类型 = 值 // 布尔类型 ----boolean let flag : boolean = true flag = false 在赋值的时 ...

  2. Python自动合并Word文件同时添加分页符的方法

      本文介绍基于Python,实现对多个Word文档加以自动合并,并在每次合并时按要求增添一个分页符的方法.   现有多个Word文档文件,需将其按名称顺序合并为一个新的Word文件,且需保证每一次合 ...

  3. 【CTO变形记】整体系统思维-从现象到本质

    前言:我们的⼤脑⾥的认知不是⼀块⽩板,⽽是写满着密密麻麻对这个世界形成的各种观念.信念.塞满了对事物的各个表象,我们脑中的表象世界,对应着外部世界的各种事物. 如果感觉本篇看起来有点不适应,可以看看之 ...

  4. Linux快照利器:Timeshift,备份和还原效果杠杠的

    转载csdn:Linux快照利器:Timeshift,备份和还原效果杠杠的_网络技术联盟站-CSDN博客

  5. JR文摘_TNFi和阿贝西普降低RA患者CVD风险

    转自 Dr Jack Cush的Twitter (2020-08-19) JR文摘: 18754例RA患者前瞻性观察到1801次CVD事件,与csDMARDs相比, TNFi(HR: 0.82, 95 ...

  6. LeetCode 周赛 334,在算法的世界里反复横跳

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 今天是 LeetCode 第 334 场周赛,你参加了吗?这场周赛考察范围比较基础,整体 ...

  7. Android:ViewModel

    什么是 ViewModel ViewModel 旨在以注重生命周期的方式存储和管理界面相关数据.ViewModel 让数据可在发生屏幕旋转等配置更改后继续留存. 上面一段话是截取自官方文档对 View ...

  8. Socket.io + Knex 实现私聊聊天室

    前言 本文只介绍实现的核心代码,目的是记录和分享知识.若感兴趣可以往下看,在文章最后贴上了仓库地址.前端使用 Vite + Vue3:后端使用 Knex + Express. Room 的概念 私密 ...

  9. Stable Diffusion 关键词tag语法教程

    提示词 Prompt Prompt 是输入到文生图模型的文字,不同的 Prompt 对于生成的图像质量有较大的影响 支持的语言Stable Diffusion, NovelAI等模型支持的输入语言为英 ...

  10. HashMap排序题

    HashMap排序题 题目 已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性. 请写一个方法实现对HashMap ...