2011-10-12 6 views
2

チャンクデコードHTTP一つがあるサーバーの応答をデコードする方法を+ gzipで圧縮されたコンテンツ

1)転送エンコード:チャンク 2)コンテンツ・タイプ:gzipの

私はこれを手動で行う必要があるとすることができます」 curlを使ってリクエストを送信するだけです。私は生の$文字列からデコードする必要があります。

は、ここでのHTTP REPONSE(PHP)をunchunkすることになっている機能です。

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

しかし、(gzinflateこのスニペットではありません)gzipで圧縮されたコンテンツでは動作しないようです。返されたコンテンツに対してgzinflateを実行しようとしましたが、それはまったく動作しません。

アイデア?または、チャンクされた作品を一緒にエンコードして転送するにはどうすればよいですか?

おかげ

答えて

-1

あなたは、この機能は確かに適切にいくつかのテキスト応答に対してそれをしようとすることによって、チャンク応答を集約することを確認することによって開始することができます。私はPHPに堪能ではないので、私はこの関数がうまくいくかどうかは言えませんが、gzipされたレスポンスはバイナリであるため、文字列に連結しても問題ないと思います。そして、なぜあなたは "生$ stringからデコードする"必要があるのか​​説明できますか?すべてのHTTPの詳細を適切に処理することが証明されているクライアントを使用する理由と、返された内容を膨らませることが効果的ではないのはなぜですか?

関連する問題