zoukankan      html  css  js  c++  java
  • PHP之httpRequest

    <?php 

      /**

      * Respose A Http Request

      *

      * @param string $url

      * @param array $post

      * @param string $method

      * @param bool $returnHeader

      * @param string $cookie

      * @param bool $bysocket

      * @param string $ip

      * @param integer $timeout

      * @param bool $block

      * @return string Response

      */ 

      function httpRequest($url,$post='',$method='GET',$limit=0,$returnHeader=FALSE,$cookie='',$bysocket=FALSE,$ip='',$timeout=15,$block=TRUE) { 

        $return = ''; 

        $matches = parse_url($url); 

        !isset($matches['host']) && $matches['host'] = ''; 

        !isset($matches['path']) && $matches['path'] = ''; 

        !isset($matches['query']) && $matches['query'] = ''; 

        !isset($matches['port']) && $matches['port'] = ''; 

        $host = $matches['host']; 

        $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/'; 

        $port = !empty($matches['port']) ? $matches['port'] : 80; 

        if(strtolower($method) == 'post') { 

          $post = (is_array($post) and !empty($post)) ? http_build_query($post) : $post; 

          $out = "POST $path HTTP/1.0 "; 

          $out .= "Accept: */* "; 

          //$out .= "Referer: $boardurl "; 

          $out .= "Accept-Language: zh-cn "; 

          $out .= "Content-Type: application/x-www-form-urlencoded "; 

          $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT] "; 

          $out .= "Host: $host "; 

          $out .= 'Content-Length: '.strlen($post)." "; 

          $out .= "Connection: Close "; 

          $out .= "Cache-Control: no-cache "; 

          $out .= "Cookie: $cookie "; 

          $out .= $post; 

        } else { 

          $out = "GET $path HTTP/1.0 "; 

          $out .= "Accept: */* "; 

          //$out .= "Referer: $boardurl "; 

          $out .= "Accept-Language: zh-cn "; 

          $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT] "; 

          $out .= "Host: $host "; 

          $out .= "Connection: Close "; 

          $out .= "Cookie: $cookie "; 

        } 

        $fp = fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout); 

        if(!$fp){ 

          return ''; 

        }else { 

          $header = $content = ''; 

          stream_set_blocking($fp, $block); 

          stream_set_timeout($fp, $timeout); 

          fwrite($fp, $out); 

          $status = stream_get_meta_data($fp); 

          if(!$status['timed_out']) {//未超时 

            while (!feof($fp)) { 

              $header .= $h = fgets($fp); 

              if($h && ($h == " " ||  $h == " ")){ 

                break; 

              }

            } 

            $stop = false; 

            while(!feof($fp) && !$stop) { 

              $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit)); 

              $content .= $data; 

              if($limit) { 

                $limit -= strlen($data); 

                $stop = $limit <= 0; 

              } 

            } 

          } 

          fclose($fp); 

          return $returnHeader ? array($header,$content) : $content; 

        } 

      } 

    ?>

  • 相关阅读:
    js获取当前网页的源码
    jquery实现点击图片全屏查看功能
    html查看大图、js查看大图
    【后端】SSM(Spring + SpringMVC + Mybatis)框架整合(二)
    【macOS】免费使用正版 Paragon NTFS for Mac(非破解)
    【后端】SSM(Spring + SpringMVC + Mybatis)框架整合(一)
    c# 自动生成N个随机数和为1
    分布式事务的解决方案
    【JUC】一些线程基础
    【工具】apng图像判定调研
  • 原文地址:https://www.cnblogs.com/alonesky/p/10042639.html
Copyright © 2011-2022 走看看