Причина, по которой ваш пример не работает, полностью присутствует в буфере.
Прошло некоторое время с тех пор, как я посмотрел на стандарт, но, по крайней мере, я могу дать вам шаг в правильном направлении. По сути, при чтении из chunked-Transfer первые пару байтов, на мой взгляд, представляют количество байтов в чанке. Примерно так (взято из википедии).
25
This is the data in the first chunk
1C
and this is the second one
3
con
8
sequence
0
Вам необходимо проверить количество байтов для чтения, прочитать байты и повторять до тех пор, пока число байтов для чтения не станет равным 0.
Самый простой способ сделать это - указать в заголовке запроса HTTP 1.0 (который не поддерживает частичную передачу) или использовать библиотеку, которая обрабатывает это для вас, т. Е. CURL.