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脚本的10个技巧(6)
Oct 09 PHP
php一些公用函数的集合
Mar 27 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
PHP file_exists问题杂谈
May 07 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 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
PHP脚本的10个技巧(7)
2006/10/09 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
JS实现手风琴特效
2020/11/08 Javascript
python的几种开发工具介绍
2007/03/07 Python
python实现调用其他python脚本的方法
2014/10/05 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
用python解压分析jar包实例
2020/01/16 Python
Django缓存Cache使用详解
2020/11/30 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
省级青年文明号申报材料
2014/05/23 职场文书
会计学习心得体会
2014/09/09 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2015年招聘工作总结
2014/12/12 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
mysqldump进行数据备份详解
2022/07/15 MySQL