サーバーの応答をどのようにデコードしますか
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 + チャンク化された転送エンコーディングはどのように連携しますか?
ありがとう