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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
PHP新手上路(三)
Oct 09 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
php实现四舍五入的方法小结
Mar 03 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
Yii2框架加载css和js文件的方法分析
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的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
关于Python作用域自学总结
2019/06/10 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
应届大学生自荐信格式
2013/09/21 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
TV动画《间谍过家家》公开PV
2022/03/20 日漫
SQL Server删除表中的重复数据
2022/05/25 SQL Server