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中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
PHP常用的排序和查找算法
Aug 06 PHP
php实现微信发红包
Dec 05 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
laravel 数据验证规则详解
Oct 23 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php处理复杂xml数据示例
2016/07/11 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
php生成HTML文件的类方法
2019/10/11 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
python 中split 和 strip的实例详解
2017/07/12 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python微信库:itchat的用法详解
2017/08/14 Python
python实现百度语音识别api
2018/04/10 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
详解【python】str与json类型转换
2019/04/29 Python
django使用graphql的实例
2020/09/02 Python
python excel多行合并的方法
2020/12/09 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
美德少年主要事迹材料
2015/11/04 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
Oracle用户管理及赋权
2022/04/24 Oracle