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 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
复杂检索数据并分页显示的处理方法
Oct 09 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
PHP addslashes()函数讲解
Feb 03 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
安装docker和docker-compose实例详解
Jul 30 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 PHP
Cookie跨域问题解决方案代码示例
Nov 24 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的命令行命令使用指南
2015/08/18 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
python 获取et和excel的版本号
2009/04/09 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
解读Python中degrees()方法的使用
2015/05/18 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
应聘编辑自荐信范文
2014/03/12 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
应届生简历自我评价
2015/03/11 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL