php实现httpclient类示例

 这篇文章主要介绍了php实现httpclient类示例,需要的朋友可以参考下

 代码如下:
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. "rn";
  $header .= 'Connection: close'. "rn";
  $header .= 'Accept: */*'. "rn";
  $header .= 'User-Agent: '. ( isset($this->args['userAgent']) ? $this->args['userAgent'] : $_SERVER['HTTP_USER_AGENT'] ). "rn";
  $header .= 'DNT: 1'. "rn";
  if($cookie) $header .= 'Cookie: '. $cookie. "rn";
  if($this->referer) $header .= 'Referer: '. $this->referer. "rn";
 
  $options = array();
  $options['http']['method'] = 'GET';
  $options['http']['header'] = $header;
 
  $response = get_headers($url);
  $this->request = $header;
  $this->response = implode("rn", $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. "rn";
  $header .= 'Connection: close'. "rn";
  $header .= 'Accept: */*'. "rn";
  $header .= 'User-Agent: '. ( isset($this->args['userAgent']) ? $this->args['userAgent'] : $_SERVER['HTTP_USER_AGENT'] ). "rn";
  $header .= 'Content-Type: application/x-www-form-urlencoded'. "rn";
  $header .= 'DNT: 1'. "rn";
  if($cookie) $header .= 'Cookie: '. $cookie. "rn";
  if($this->referer) $header .= 'Referer: '. $this->referer. "rn";
  if($data) $header .= 'Content-Length: '. strlen($data). "rn";
 
  $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("rn", $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('http://www.jb51.net/ServiceLogin/', 'hash='. $time, 'uid=1;users=admin;')
 
echo $httpClient->buffer;

时间: 2024-09-14 01:47:30

php实现httpclient类示例的相关文章

php实现httpclient类示例_php实例

复制代码 代码如下: 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;  //

网络爬虫-用Java来抓取网页实例中HttpClient类的问题

问题描述 用Java来抓取网页实例中HttpClient类的问题 报这么一大堆错误我也是受不了了...... 主要的问题应该是HttpClient类这个东西,在网上查了这个类是httpclient-2.x.jar包的产物,我导入的是httpclient-4.2.2.jar和httpcore-4.2.2.jar包,而这两个新的工具包并不包含HttpClient类,查阅了Java API帮助文档后,自己并没有找到HttpClient类的替代类,而是一堆接口和抽象类,由于是刚开始写这个,所以有点懵.

PHP封装的HttpClient类用法实例

         本文实例讲述了PHP封装的HttpClient类.分享给大家供大家参考.具体分析如下:          这是一段php封装的HttpClient类,可实现GET POST Cookie Session等简单的功能.原来做过,这两天重新修改了一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

PHP封装的HttpClient类用法实例_php技巧

本文实例讲述了PHP封装的HttpClient类.分享给大家供大家参考.具体分析如下: 这是一段php封装的HttpClient类,可实现GET POST Cookie Session等简单的功能.原来做过,这两天重新修改了一下. <?php /* * Filename: httpclient.php * Created on 2012-12-21 * Created by RobinTang * To change the template for this generated file go

php 使用redis锁限制并发访问类示例_php技巧

本文介绍了php 使用redis锁限制并发访问类,并详细的介绍了并发访问限制方法. 1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功. 例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券. 伪代码如下: if A(可以换领)     B(执行换领)     C(更新为已换领) D(结束) 如果用户并发提交换领码,都能通过可以换领(A)的判断,因

java多线程Future和Callable类示例分享_java

一,描写叙述     ​在多线程下编程的时候.大家可能会遇到一种需求,就是我想在我开启的线程都结束时,同一时候获取每一个线程中返回的数据然后再做统一处理,在这种需求下,Future与Callable的组合就派上了非常大的用场. 也有人会说,我能够使用同步来完毕这个需求啊,普通情况下确实能够.可是在一种特殊情况下就不行了:     ​想象,你开启了多个线程同步计算一些数据,可是大家都知道,线程是会争用资源的,也就是说.你开启多个线程来同步计算数据时.事实上线程之间的计算顺序是不可空的,当然除非你非

java实现http请求工具类示例_java

通过http rest请求返回数据 复制代码 代码如下: import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import

java自定义日期转化类示例_java

java自定义日期转化类 复制代码 代码如下: import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; import org.apache.commons.beanutils.Converter; /** * 自定义 java.util.Date日期转换器 *  *  */public class MyDateConve

codeigniter中测试通过的分页类示例_php实例

通用分页类(以Codeigniter测试) page_list.php 复制代码 代码如下: <?php if( ! defined('BASEPATH')) die('No Access'); /** * 分页类 */class Page_list {     /**     * 总数据     * @var int     */    private $total;    /**     * 每页显示数据     * @var int     */    private $size;