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个人网站架设连环讲(三)
Oct 09 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
php小偷相关截取函数备忘
Nov 28 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
PHP常用编译参数中文说明
Sep 27 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
php异常处理捕获错误整理
Sep 23 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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
人族 TERRAN 概述
2020/03/14 星际争霸
PHP EOT定界符的使用详解
2008/09/30 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
理解javascript正则表达式
2016/03/08 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
javascript实现画板功能
2020/04/12 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python 多进程队列数据处理详解
2019/12/23 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
骆驼官方商城:CAMEL
2016/11/22 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
大学生在校学习的自我评价
2014/02/18 职场文书
毕业留言寄语大全
2014/04/10 职场文书
建设投标担保书
2014/05/13 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
同学联谊会邀请函
2019/06/24 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏