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 in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php通过字符串调用函数示例
Mar 02 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
php自定义分页类完整实例
Dec 25 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
PHP+JQUERY操作JSON实例
Mar 23 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 PHP
PHP时间相关常用函数用法示例
Jun 03 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对称加密算法示例
2014/05/07 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
详解php反序列化
2020/06/10 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
node后端服务保活的实现
2019/11/10 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
python实现的生成word文档功能示例
2019/08/23 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
python3操作redis实现List列表实例
2021/08/04 Python
详解CSS3浏览器兼容
2022/12/24 HTML / CSS