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语法(1)
Oct 09 PHP
PHP脚本的10个技巧(3)
Oct 09 PHP
php 三维饼图的实现代码
Sep 28 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
Yii实现显示静态页的方法
Apr 25 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
PHP设计模式之命令模式示例详解
Dec 20 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获取http请求的头信息实现步骤
2012/12/16 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
护理毕业生自荐信范文
2013/12/22 职场文书
汽车维修求职信
2014/06/15 职场文书
求职自我推荐信
2014/06/25 职场文书
小学家长学校培训材料
2014/08/24 职场文书
前台岗位职责
2015/02/13 职场文书
材料采购员岗位职责
2015/04/03 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
导游词之长城八达岭
2019/09/24 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL