Example #1
0
function download($Url, $Method = "GET", $Referer = "", $PostHash = null, $ResponseFileName = null)
{
    $PostData = array();
    if ($PostHash) {
        foreach ($PostHash as $key => $value) {
            $PostData[] = $key . '=' . $value;
        }
    }
    try {
        do {
            $Request = make_request($Url, $Method, $Referer, implode('&', $PostData), $host, $port);
            if ($open) {
                fclose($open);
            }
            $open = fsockopen($host, $port, $errno, $errst, 30);
            fputs($open, $Request);
            $StatusLine = fgets($open);
            $Response = $StatusLine . fget_response($open);
            if ($ResponseFileName) {
                file_put_contents($ResponseFileName, $Response);
            }
            $StatusCode = extract_statusline_code($Response);
            switch ($StatusCode) {
                case 303:
                    $Method = 'GET';
                case 301:
                case 302:
                    $Referer = $Url;
                    $Url = extract_location($Response);
                    $PostData = array();
            }
        } while ($StatusCode != 200 and $StatusCode < 400);
        while (!feof($open)) {
            $buffer = fgets($open, 4096);
            if ($buffer === false) {
                break;
            }
            $Html .= $buffer;
        }
        fclose($open);
    } catch (E_NOTICE $e) {
        echo "Notice raised: " . $e->getMessage();
    }
    update_cookies($Url, $Response);
    if (preg_match("/transfer\\-encoding\\: chunked/i", $Response)) {
        $Html = transfer_encoding_chunked_decode($Html);
    }
    if (preg_match("/Content\\-Encoding\\: gzip/i", $Response)) {
        $Response = preg_replace("/Content\\-Encoding: gzip\\s+/isU", "", $Response);
        $Html = gzinflate(substr($Html, 10));
    }
    return $Html;
}
Example #2
0
 public function getResponseBody()
 {
     if ($this->getResponseHeader("Content-Encoding") == "gzip" && $this->getResponseHeader("Transfer-Encoding") == "chunked") {
         return gzdecode_1(transfer_encoding_chunked_decode($this->responseBody));
     } else {
         if ($this->getResponseHeader("Content-Encoding") == "gzip") {
             return gzdecode_1($this->responseBody);
         } else {
             return $this->responseBody;
         }
     }
 }