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下使用SMTP发邮件的代码
Jan 10 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
详解PHP设计模式之依赖注入模式
May 25 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python如何实现单链表的反转
2020/02/10 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
什么是Remote Module
2016/06/10 面试题
班主任班级寄语大全
2014/04/04 职场文书
实习公司领导推荐函
2014/05/21 职场文书
迎国庆演讲稿
2014/09/05 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
会计工作岗位职责
2015/02/03 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
Golang 入门 之url 包
2022/05/04 Golang
python内置模块之上下文管理contextlib
2022/06/14 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers