如何解码服务器响应
1) 传输编码:分块 2) 内容类型:gzip
我需要手动执行此操作,不能只使用 curl 发送请求。我需要从原始 $string 解码。
这是一个应该解开 HTTP 响应 (php) 的函数:
function unchunkHttpResponse($str=null) {
if (!is_string($str) or strlen($str) < 1) { return false; }
$eol = "\r\n";
$add = strlen($eol);
$tmp = $str;
$str = '';
do {
$tmp = ltrim($tmp);
$pos = strpos($tmp, $eol);
if ($pos === false) { return false; }
$len = hexdec(substr($tmp,0,$pos));
if (!is_numeric($len) or $len < 0) { return false; }
$str .= substr($tmp, ($pos + $add), $len);
$tmp = substr($tmp, ($len + $pos + $add));
$check = trim($tmp);
} while(!empty($check));
unset($tmp);
return $str;
}
但它似乎不适用于 gzip 压缩的内容(gzinflate 不在此片段中)。我尝试对返回的内容执行 gzinflate,但这根本不起作用。
有任何想法吗?或者 gzip + 传输编码分块如何协同工作?
谢谢