/**
      * @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;
}

最新文章

  1. centos 如何清理/dev/vda1系统盘
  2. android应用锁之监听应用前后台切换方式
  3. JSON时间转换格式化
  4. Codeforces Round #349 (Div. 1) B. World Tour 最短路+暴力枚举
  5. java中的容器问题
  6. Android简易注解View(java反射实现)
  7. C# 测试代码运行时间
  8. Oracle中job的使用详解
  9. compass模块----Helpers
  10. Android中view的事件
  11. refreshContext(context)方法源码探究
  12. Python异常处理详解
  13. Python3之max key参数学习记录
  14. SVN的Windows和Linux客户端操作详解
  15. Nginx反向代理下IIS获取真实IP
  16. win7设置开机启动virtualBOX虚拟机
  17. IE浏览器下,输入框最后不显示X
  18. 阻止关闭窗口,FormCloseQuery
  19. MFC中 在SDI模式下的视图中添加按钮的方法
  20. ios 11 12以后下拉刷新不回位的解决方法

热门文章

  1. 安卓逆向 JNI实先java与C互通
  2. CF1358D The Best Vacation
  3. 干货!超实用的 Linux 初始化脚本
  4. Docker和Kubernetes网络模型
  5. Python 常用小例子
  6. N63050 第二周运维作业
  7. vscode格式化
  8. 安装centos,ubuntu系统
  9. golang 切片(slice)
  10. Vue 实现点击空白处隐藏某节点