php实现httpclient类示例


Posted in PHP onApril 08, 2014
httpClient::init($httpClient, $args = null);
$httpClient->get($url, $data = null, $cookie = null);
var_dump($httpClient->buffer);
<?php
class httpClient {
 public $buffer = null;  // buffer 获取返回的字符串
 public $referer = null;  // referer 设置 HTTP_REFERER 的网址
 public $response = null; // response 服务器响应的 header 信息
 public $request = null;  // request 发送到服务器的 header 信息
 private $args = null;
 public static function init(&$instanceof, $args = array()) {
  return $instanceof = new self($args);
 }
 private function __construct($args = array()) {
  if(!is_array($args)) $args = array();
  $this->args = $args;
  if(!empty($this->args['debugging'])) {
   ob_end_clean();
   set_time_limit(0);
   header('Content-Type: text/plain; charset=utf-8');
  }
 }
 public function get($url, $data = null, $cookie = null) {
  $parse = parse_url($url);
  $url .= isset($parse['query']) ? '&'. $data : ( $data ? '?'. $data : '' );
  $host = $parse['host'];
  $header  = 'Host: '. $host. "\r\n";
  $header .= 'Connection: close'. "\r\n";
  $header .= 'Accept: */*'. "\r\n";
  $header .= 'User-Agent: '. ( isset($this->args['userAgent']) ? $this->args['userAgent'] : $_SERVER['HTTP_USER_AGENT'] ). "\r\n";
  $header .= 'DNT: 1'. "\r\n";
  if($cookie) $header .= 'Cookie: '. $cookie. "\r\n";
  if($this->referer) $header .= 'Referer: '. $this->referer. "\r\n";
  $options = array();
  $options['http']['method'] = 'GET';
  $options['http']['header'] = $header;
  $response = get_headers($url);
  $this->request = $header;
  $this->response = implode("\r\n", $response);
  $context = stream_context_create($options);
  return $this->buffer = file_get_contents($url, false, $context);
 }
 public function post($url, $data = null, $cookie = null) {
  $parse = parse_url($url);
  $host = $parse['host'];
  $header  = 'Host: '. $host. "\r\n";
  $header .= 'Connection: close'. "\r\n";
  $header .= 'Accept: */*'. "\r\n";
  $header .= 'User-Agent: '. ( isset($this->args['userAgent']) ? $this->args['userAgent'] : $_SERVER['HTTP_USER_AGENT'] ). "\r\n";
  $header .= 'Content-Type: application/x-www-form-urlencoded'. "\r\n";
  $header .= 'DNT: 1'. "\r\n";
  if($cookie) $header .= 'Cookie: '. $cookie. "\r\n";
  if($this->referer) $header .= 'Referer: '. $this->referer. "\r\n";
  if($data) $header .= 'Content-Length: '. strlen($data). "\r\n";
  $options = array();
  $options['http']['method'] = 'POST';
  $options['http']['header'] = $header;
  if($data) $options['http']['content'] = $data;
  $response = get_headers($url);
  $this->request = $header;
  $this->response = implode("\r\n", $response);
  $context = stream_context_create($options);
  return $this->buffer = file_get_contents($url, false, $context);
 }
}
httpClient::init($httpClient, array( 'debugging' => true , 'userAgent' => 'MSIE 15.0' ));
$httpClient->get('http://www.baidu.com', 'name=haowei');
echo $httpClient->request; // 获取 请求头部信息
echo $httpClient->response; // 获取 响应的头部信息
echo $httpClient->buffer; // 获取 网页内容
$httpClient->get('https://3water.com/ServiceLogin/', 'hash='. $time, 'uid=1;users=admin;')
echo $httpClient->buffer;
PHP 相关文章推荐
利用PHP创建动态图像
Oct 09 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
php使用json_encode对变量json编码
Apr 07 #PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 #PHP
PHP中的Memcache详解
Apr 05 #PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 #PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 #PHP
PHP6 中可能会出现的新特性预览
Apr 04 #PHP
php实现水仙花数示例分享
Apr 03 #PHP
You might like
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
基于python的字节编译详解
2017/09/20 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
python如何从键盘获取输入实例
2020/06/18 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
工程部主管岗位职责
2013/11/17 职场文书
马智宇结婚主持词
2014/04/01 职场文书
单位委托书怎么写
2014/08/02 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
小学班主任培训心得体会
2016/01/07 职场文书