2011-10-12 159 views
2

如何将一个解码服务器响应是解码HTTP分块+ gzip压缩内容

1)传输编码:分块 2)内容类型:gzip的

我需要手动执行此操作和可以”只需使用curl发送请求。我需要从原始$字符串解码。

下面是应该unchunk一个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 +传输编码如何组合在一起工作?

感谢

回答

-1

你能否通过验证,该函数确实是正确的聚集试图通过它针对一些文本响应分块的响应启动。我不精通php,所以我不能确定这个函数是否可以工作,但是由于gzip的响应是二进制的,我想知道是否将它连接到字符串是可以做的。你能解释为什么你需要“从原始的$ string解码”吗?为什么使用经过验证可以正确处理所有HTTP细节的客户端,并且为它返回的任何内容都不起作用?