Я написал легкую http lib для php, все работает нормально, за исключением того, что ответ превышает определенный размер. Запрос выполняется с помощью stream_socket_client.
Все работает до тех пор, пока тело ответа не будет содержать большие данные, а затем в данные будет вставлен какой-то заполнитель, например:
f7c [{key: value}, {ключ: значение}, {ключ: значение}, {ключ: значение} ... 1000 {ключ: значение}, {ключ: значение}, {ключ: значение}, ...] 1000
в этом примере «f7 c» и «1000» в середине и конце не входят в исходное тело ответа.
код для синтаксического анализа ответа:
private function parseInputStream($stream){
$header = [];
$body = "";
$isHeaderParsed = false;
while (!feof($stream)) {
$line = fgets($stream, 1024);
if (!$isHeaderParsed){
if ($line === "\r\n"){
$isHeaderParsed = true;
continue;
} else {
array_push($header, str_replace("\r\n", "", $line));
}
} else {
$body .= $line;
}
}
$this->parseHeader($header);
$this->parseBody($body);
}
Любые идеи, где эти значения пришли из?