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函数utf8转gb2312编码
Dec 21 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
nginx+thinkphp下解决不支持pathinfo模式
Jul 01 PHP
php实现递归的三种基本方式
Jul 04 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
ThinkPHP静态缓存简单配置和使用方法详解
Mar 23 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
yii框架搜索分页modle写法
Dec 19 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 面向对象的一个例子
2011/04/12 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
django自带调试服务器的使用详解
2019/08/29 Python
python实现FTP循环上传文件
2020/03/20 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
一套SQL笔试题
2016/08/14 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
结婚典礼证婚词
2014/01/11 职场文书
自荐信的基本格式
2014/02/22 职场文书
护理目标管理责任书
2014/07/25 职场文书
党员四风剖析材料
2014/08/27 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
放飞理想主题班会
2015/08/14 职场文书