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 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
解析php时间戳与日期的转换
Jun 06 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
php合并数组中相同元素的方法
Nov 13 PHP
php函数与传递参数实例分析
Nov 15 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
javascript获取url上某个参数的方法
2013/11/08 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
vuex 的简单使用
2018/03/22 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Python rstrip()方法实例详解
2018/11/11 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
化工机械应届生求职信
2013/11/04 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
党员干部公开承诺书
2014/03/26 职场文书
最美护士演讲稿
2014/08/27 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
律师函格式范本
2015/05/27 职场文书
法制主题班会教案
2015/08/13 职场文书
2016银行招聘自荐信
2016/01/28 职场文书