zoukankan      html  css  js  c++  java
  • php HTTP请求

    function request($host)
    {
        $url = parse_url($host);
        $port = !empty($url['port']) ? $url['port'] : 80;
        $query = !empty($url['query']) ? sprintf('?%s', $url['query']) : null;
        $path = !empty($url['path']) ? $url['path'] : '/index.php';
        $request = $path . $query;
        $fp = fsockopen($url['host'], $port, $errno, $errstr, 30);
        $out = null;
        if (!$fp) {
            echo "$errstr ($errno)
    ";
        } else {
            $out .= sprintf("GET %s HTTP/1.1%s", $request, chr(10));
            $out .= "User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
    ";
            $out .= sprintf("Host:%s%s", $url['host'], "
    ");
            $out .= "Connection: Close
    
    ";
            fwrite($fp, $out);
            $data = stream_get_contents($fp);
            fclose($fp);
        }
        $pos = strpos($data, "
    
    ");
        $head = substr($data, 0, $pos); //http head
        $status = substr($head, 0, strpos($head, "
    ")); //http status line
        $body = substr($data, $pos + 4, strlen($data) - ($pos + 4)); //page body
        if (preg_match("/^HTTP/d.ds([d]+)s.*$/", $status, $matches)) {
            if (intval($matches[1]) / 100 == 2) {
                return unchunk($body);
            } else {
                return false;
            }
        } else {
            return false;
        }
        /** preg_match('/<s*(S+)(s[^>]*)?>[sS]*<s*/1s*>/i', $data, $html);*/
    }
    function unchunk($result)
    {
        return preg_replace_callback('/(?:(?:
    |
    )|^)([0-9A-F]+)(?:
    |
    ){1,2}(.*?)' .
            '((?:
    |
    )(?:[0-9A-F]+(?:
    |
    ))|$)/si', create_function('$matches',
            'return hexdec($matches[1]) == strlen($matches[2]) ? $matches[2] : $matches[0];'),
            $result);
    }
  • 相关阅读:
    表单传文件值读取不到
    tomacat启动慢
    finder文件目录跳转快捷键
    ziparchiver添加后编译出错
    mjrefresh源码分析
    Code Sign error: No unexpired provisioning profiles found that contain any of the keychain's signing certificates
    java web学习
    Java HashMap
    Java Convert String to Binary
    Java ArrayList Class
  • 原文地址:https://www.cnblogs.com/freespider/p/3467810.html
Copyright © 2011-2022 走看看