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; }
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; } } }