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 相关文章推荐
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php session的锁和并发
Jan 22 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
php常用图片处理类
Mar 16 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
简单的自定义php模板引擎
Aug 26 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 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 $_SERVER当前完整url的写法
2009/11/12 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
纯javascript版日历控件
2016/11/24 Javascript
Angular的$http与$location
2016/12/26 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Django中使用Celery的方法步骤
2020/12/07 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
致接力运动员广播稿
2014/02/17 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
生产现场禁烟通知
2015/04/23 职场文书
python中redis包操作数据库的教程
2022/04/19 Python