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