php中http请求类的示例分析
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章将为大家详细讲解有关php中http请求类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码:
千家信息网最后更新 2025年01月21日php中http请求类的示例分析
这篇文章将为大家详细讲解有关php中http请求类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
代码:
]>* @property* 1、timeout 超时时间,默认5秒* 2、depth 重定向深度,默认3* 3、name 上传文件的名字,默认file* 4、cookie 模拟登录时cookie存储在本地的文件,默认cookie.txt* @method* 1、ssl 是否设置https true:是 false:否* 2、auth 启用验证 user:用户名 pass:密码* 3、login 模拟登录,获取cookie* 4、cookie 使用cookie登录* 5、header 设置请求头 data:请求头数组* 6、proxy 设置服务器代理 url:代理服务器url port:代理服务器端口* 7、agent 设置浏览器代理 browse:代理浏览器 默认:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)* 8、get 模拟get请求 data:传递的数据* 9、post 模拟post请求 data:传递的数据* 10、json 模拟json请求 data:传递的数据* 11、upload 模拟表单上传 files:上传的文件 array|string* 12、download 下载文件 dir:要下载的文件 格式:a/b* 13、run 执行 ret:返回的数据* 14、info 获取执行信息 ret:返回的信息*/class http{public $timeout = 5; # 超时时间,默认5秒public $depth = 3; # 重定向深度,默认3public $name = 'file'; # 上传文件的名字,默认filepublic $cookie = 'cookie.txt'; # 模拟登录时cookie存储在本地的文件,默认cookie_nprivate $scheme = '';private $host = '';private $path = '';private $query = '';private $options = array();private $ch;private $fp;private $progress = false;/* @desc:内部方法 设置get请求参数 @param data 请求数据 */private function setget($data){ $scheme = $this->scheme; $host = $this->host; $path = $this->path; $query = $this->query; $sep = ($query || !empty($data))?"?":""; $qurl = $scheme.'://'.$host.$path.$sep.$query.$data; $this->options[CURLOPT_URL] = $qurl; return $this;}/* @desc:内部方法 设置post请求参数 @param data 请求数据 */private function setpost($data){ $scheme = $this->scheme; $host = $this->host; $path = $this->path; $query = $this->query; $sep = $query?"?":""; $qurl = $scheme.'://'.$host.$path.$sep.$query; $this->options[CURLOPT_URL] = $qurl; $this->options[CURLOPT_POST] = 1; $this->options[CURLOPT_POSTFIELDS] = $data; return $this;}/* @desc:内部方法 设置最终请求参数 */private function setopt(){ $options = $this->options; curl_setopt_array( $this->ch, $options ); return $this;}/* @desc:构造方法 设置初始请求参数 @param url 请求地址 */public function __construct($url){ $info = parse_url($url); $this->scheme = $info['scheme']?:'http'; $this->host = $info['host']; $this->path = $info['path']; $this->query = $info['query']; $this->ch = curl_init(); $this->options[CURLOPT_CONNECTTIMEOUT] = $this->timeout; $this->options[CURLOPT_RETURNTRANSFER] = 1; $this->options[CURLOPT_FOLLOWLOCATION] = 1; $this->options[CURLINFO_HEADER_OUT] = true; $this->options[CURLOPT_ENCODING] = 'gzip'; $this->options[CURLOPT_MAXREDIRS] = $this->depth;}/* @desc:是否设置https请求 @param bool true:https请求 false:http请求 */public function ssl($bool = false){ if($bool){ $this->scheme = 'https'; $this->options[CURLOPT_SSL_VERIFYHOST] = 1; $this->options[CURLOPT_SSL_VERIFYPEER] = false; } return $this;}/* @desc:设置验证用户名、密码 @param user 用户名 @param pass 密码 */public function auth($user,$pass){ $this->options[CURLOPT_USERPWD] = $user.':'.$pass; return $this;}/* @desc:模拟登录 */public function login(){ $cookie = $this->cookie; $this->options[CURLOPT_COOKIEJAR] = $cookie; $this->options[CURLOPT_RETURNTRANSFER] = 0; return $this;}/* @desc:带cookie登录 */public function cookie(){ $cookie = $this->cookie; $this->options[CURLOPT_COOKIEFILE] = $cookie; return $this;}/* @desc:设置请求头信息 @param data 请求头 */public function header($data){ $this->options[CURLOPT_HTTPHEADER] = $this->options[CURLOPT_HTTPHEADER]?:array(); $this->options[CURLOPT_HTTPHEADER] = array_merge($this->options[CURLOPT_HTTPHEADER],$data); return $this;}/* @desc:设置代理服务器 @param url 代理服务器url @param port 代理服务器端口 */public function proxy($url,$port){ $info = parse_url($url); $scheme = $info['scheme']?:'http'; $host = $info['host']; $path = $info['path']; $purl = $scheme.'://'.$host.$path.':'.$port; $this->options[CURLOPT_PROXY] = $purl; return $this;}/* @desc:设置代理浏览器 @param browse 代理浏览器 */public function agent($browse = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'){ $this->options[CURLOPT_USERAGENT] = $browse; return $this;}/* @desc:模拟get请求 @param data 请求数据 */public function get($data = array()){ $data = http_build_query($data); $this->setget($data); return $this;}/* @desc:模拟post请求 @param data 请求数据 */public function post($data = array()){ $this->setpost($data); return $this;}/* @desc:模拟json请求 @param data 请求数据 */public function json($data = array()){ $data = json_encode($data); $header = array( 'Content-Type: application/json', 'Content-Length:' . strlen($data) ); $this->header($header); $this->setpost($data); return $this;}/* @desc:模拟表单上传 @param files 文件路径 */public function upload($files){ $this->progress = true; $data = array(); $name = $this->name; if(is_array($files)){ foreach($files as $k=>$v){ $data["{$name}[{$k}]"]=new \CURLFile($v); } }else{ $data["{$name}"]=new \CURLFile($files); } ob_start(); echo ">>"; ob_flush(); flush(); $last = 0; $diff = 0; $this->options[CURLOPT_PROGRESSFUNCTION] = function($source,$dfilesize,$downsize,$upsize,$ufilesize){ global $last; global $diff; if($ufilesize > 0){ $percent = round($ufilesize/$upsize*100,2); $diff += $percent - $last; if($diff > 1){ echo "#"; $diff = 0; } $last = $percent; } ob_flush(); flush(); }; $this->options[CURLOPT_NOPROGRESS] = false; $this->setpost($data); return $this;}/* @desc:下载文件 @param dir 存储文件目录 */public function download($dir = ''){ $this->progress = true; $path = $this->path; if($dir && !is_dir($dir)){ mkdir($dir,0755,true); } $name = strrchr($path, '/'); $dsep = $dir?'/':''; ob_start(); echo ">>"; ob_flush(); flush(); $this->fp=fopen('.'.$dsep.$dir.$name, 'w'); $last = 0; $diff = 0; $this->options[CURLOPT_PROGRESSFUNCTION] = function($source,$dfilesize,$downsize,$upsize,$ufilesize){ global $last; global $diff; if($dfilesize > 0){ $percent = round($downsize/$dfilesize*100,2); $diff += $percent - $last; if($diff > 1){ echo "#"; $diff = 0; } $last = $percent; } ob_flush(); flush(); }; $this->options[CURLOPT_NOPROGRESS] = false; $this->options[CURLOPT_FILE] = $this->fp; $this->setget(''); return $this;}/* @desc:执行方法 @return ret 返回的数据 */public function run(){ $ch = $this->ch; $this->setopt(); $ret = curl_exec($ch); curl_close($ch); if($this->progress){ if($this->fp){ fclose($this->fp); } echo "#<
测试:
$http = new http('www.baidu.com');$ret = $http->ssl(true)->get()->run();echo $ret;
输出:
百度一下,你就知道
关于"php中http请求类的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
数据
文件
代理
登录
服务器
服务
方法
浏览器
浏览
参数
更多
信息
密码
用户
用户名
篇文章
存储
示例
分析
主页
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库技术实验四作业
数据库设计关系模式是什么阶段
java监听数据库表数据
阴阳师服务器崩溃怎么处理
物理网络技术专业就业前景
可视化服务器管理工具下载
推荐网络技术培训排行榜
绍兴java软件开发总结
东营戴尔服务器代理零售商
twsit数据库监控
苹果注册怎么显示服务器
易保网络技术北京有限公司
福州多点网络技术有限公司
sql数据库用什么软件
山西互联网软件开发进口
大麦刷打印机服务器
合作共赢 网络安全
聚橙网网络技术耿军
山西定制化服务器
做软件开发私活多吗
网络安全法未成年人措施
图书列表数据库
国家统计局数据库官网
求数据库中所有表的行数
网络安全讲座的邀请函
外包软件开发分录
广州南斗星链互联网科技有限公司
中学网络安全与信息化工作计划
dns联通服务器地址
都去网络技术有限公司