首页 >

HttpClient 增强版

php教程|php手册HttpClient 增强版
HttpClient,增强,更新,提示,增加,301,302
php教程-php手册
企业应用网站源码,在ubuntu卸载win,怎样启用两个tomcat,py爬虫思路,php简单秒杀示例代码,店铺seo建议lzw
更新提示: 1.增加301、302HTTP重定向 2.增加自定义发送头部 3.修复超时时间 4.增加HTTP_STATUS_CODE属性 5.支持HTTPS 来源地址:http://www.haowei.me/archives/1154.html 无 ?php class HttpClient { private static $context = null; // (resource) Socket
招商网php源码,VScode下载常见问题,ubuntu 装备安装,tomcat设置数据连接,爬虫 遇到表情,php 静态页面生成,东莞抖音搜索seo公司,拍卖有什么网站源码,ecshop 母婴模板免费下载lzw
加盟源码,vscode调试不了php,ubuntu时钟插件,让Tomcat外网访问,水泥爬虫,php 正则英文字母,安徽seo代理加盟合同,网站投票页面 模板,影音网站模板下载lzw

更新提示:

1. 增加 301、302 HTTP 重定向
2. 增加 自定义 发送头部
3. 修复 超时时间
4. 增加 HTTP_STATUS_CODE 属性
5. 支持 HTTPS

来源地址: http://www.haowei.me/archives/1154.html

.CodeEntity .code_pieces ul.piece_anchor{width:25px;position:absolute;top:25px;left:-30px;z-index:1000;} .CodeEntity .code_pieces ul.piece_anchor li{width:25px;background: #efe;margin-bottom:2px;} .CodeEntity .code_pieces ul.piece_anchor li{border-left:3px #40AA63 solid;border-right:3px #efe solid;} .CodeEntity .code_pieces ul.piece_anchor li:hover{border-right:3px #40AA63 solid;border-left:3px #efe solid;} .CodeEntity .code_pieces ul.piece_anchor li a{color: #333;padding: 3px 10px;} .CodeEntity .code_pieces .jump_to_code{visibility:hidden;position:relative;} .CodeEntity .code_pieces .code_piece:hover .jump_to_code{visibility:visible;} .CodeEntity .code_pieces .code_piece:hover .jump_to_code a{text-decoration:none;} .CodeEntity .code_pieces h2 i{float:right;font-style:normal;font-weight:normal;} .CodeEntity .code_pieces h2 i a{font-size:9pt;background: #FFFFFF;color:#00A;padding: 2px 5px;text-decoration:none;}



args = $args;        $charset = isset($this->args['charset']) ?  $this->args['charset'] : 'UTF-8';        if(!empty($this->args['debugging'])) {               set_time_limit(0);            header('Content-Type: text/plain;charset='. $charset);           }else{               header('Content-Type: text/html;charset='. $charset);           }                   if(!isset($this->args['timeout'])) $this->args['timeout'] = 5;        $this->args['timeout'] = intval($this->args['timeout']);                   if(!empty($this->args['redirect'])) $this->attachRedirect = true;        $this->headerList = array();               }           public static function init(& $instanceof, $args = null) {                   static $instance;        if(!$instance) $instanceof = new self($args);        return $instance = $instanceof;               }           public function setHeader($name, $value) {                   $this->headerList[$name] = $value;               }         private function build($args) {                   list($method, $url, $data, $cookie) = $args;         		$this->buffer = '';        $this->request = '';        $this->header = array();		$this->response = array();        $userAgent = isset($this->args['userAgent']) ? $this->args['userAgent'] : ( isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : __CLASS__ );        extract($parse = parse_url($url));                   $path = isset($query) ? $path .'?'. $query : ( isset($path) ? $path : '/' );        $port = isset($port) ? $port : ( $scheme == 'https' ? 443 : 80 );        $protocol = $scheme == 'https' ? 'ssl://' : 'tcp://';                   self::$context = fsockopen($protocol . $host, $port, $errno, $errstr, $this->args['timeout']);        if($errno) trigger_error(iconv('GBK//IGNORE', 'UTF-8', $errstr), E_USER_ERROR);                   stream_set_blocking(self::$context, 1);        stream_set_timeout(self::$context, $this->args['timeout']);                   $query = $data;        if($data && is_array($data)) {                           $query = array();            foreach($data as $k => $value)            array_push($query, $k .'='. $value);            $query = implode('&', $query);                       }                   array_push($this->header, $method .' '. $path .' HTTP/1.1');        array_push($this->header, 'Host: '. $host);        array_push($this->header, 'Accept: */*');        array_push($this->header, 'Content-type: application/x-www-form-urlencoded');        array_push($this->header, 'Connection: close');        array_push($this->header, 'User-Agent: '. $userAgent);                   if($this->headerList)        foreach($this->headerList as $name => $value)        array_push($this->header, $name .': '. $value);                   if($cookie) array_push($this->header, 'Cookie: '. $cookie );        if($data) array_push($this->header, 'Content-Length: '. strlen($query));        if($data) array_push($this->header, '');        if($data) array_push($this->header, $query);        array_push($this->header, "\r\n");           $this->request = implode("\r\n", $this->header);              fputs(self::$context, $this->request);           $skipped = false;        $this->HTTP_STATUS_CODE = 0;        $this->HTTP_TRANSFER_CHUNKED = false;                   while(!feof(self::$context)) {                           if(($line = fgets(self::$context))) {   if(preg_match('/HTTP\/\d\.\d\s*(\d+)/i', $line, $match))$this->HTTP_STATUS_CODE = (int) array_pop($match);             if(preg_match('/Location:\s*(.+)\s*?/i', $line, $match)) ( ($this->HTTP_REDIRECT_URL = trim(array_pop($match))) && $skipped = !$skipped );             if(preg_match('/Transfer\-Encoding:\s*chunked/i', $line, $match)) $this->HTTP_TRANSFER_CHUNKED = true;if(array_push($this->response, $line) && in_array($line, array("\n", "\r\n"))) break;               }                       }                   if($this->attachRedirect && $skipped) {                           fclose(self::$context);            $data ? call_user_func_array(array($this, $method), array($this->HTTP_REDIRECT_URL, $data, $cookie)):            call_user_func_array(array($this, $method), array($this->HTTP_REDIRECT_URL, $cookie));                       }                          if(!$skipped) {                       if($this->HTTP_STATUS_CODE === 200) {   $this->buffer = '';$chunksize = 0;$chunked = ''; while(!feof(self::$context)) {         $line = fgets(self::$context);    if($this->HTTP_TRANSFER_CHUNKED) {                 if(!$chunksize) {                         $chunksize = (int) hexdec(trim(ltrim($line, '0'))) + 2;                     }else{                         if(strlen($chunked) buffer .= substr($chunked, 0, $chunksize - 2);$chunksize = (int) hexdec(trim(ltrim($line, '0'))) + 2;$chunked = '';            }                     }             }else{                 $this->buffer .= $line;         }}                  }                       }                   return (string) $this->buffer;               }           public function get($url, $cookie = null) {                   return $this->build(array('GET', $url, null, $cookie));               }           public function post($url, $data = null, $cookie = null) {                   return $this->build(array('POST', $url, $data, $cookie));               }           public function __set($attr, $value) {                   $this->$attr = $value;               }           public function __destruct() {                   if(is_resource(self::$context)) fclose(self::$context);        unset($this->headerList, $this->header, $this->response, $this->request, $this->args, $this->buffer);               }       }HttpClient::init($HttpClient, array('userAgent' => $_SERVER['HTTP_USER_AGENT'], 'redirect' => true));$HttpClient->get('http://www.haowei.me');echo $HttpClient->buffer;

HttpClient 增强版
  • 求HttpClient.class.php类的例子解决思路
  • 求HttpClient.class.php类的例子解决思路 | 求HttpClient.class.php类的例子解决思路 ...

    HttpClient 增强版
  • 请问一个HttpClient的有关问题
  • 请问一个HttpClient的有关问题 | 请问一个HttpClient的有关问题 ...

    HttpClient 增强版
  • HttpClient调用ASP.NET Web API的图文详解
  • HttpClient调用ASP.NET Web API的图文详解 | HttpClient调用ASP.NET Web API的图文详解 ...