Решение Ani не поможет вам, потому что ваша проблема не в потоковой передаче, а в получении доступа к оригинальным блокам на уровне протокола. Если метаданные не добавлены в возвращаемые заголовки, что, как я подозреваю, не так, ваш единственный выбор может состоять в том, чтобы перейти на уровень сокетов и реализовать свой собственный клиентский код HTTP. В зависимости от того, насколько вы можете ограничить функциональность и ваш собственный комфорт с протоколами, это может быть не так сложно.
редактировать
Если вы откроете сокет, отправите правильно сформированный запрос HTTP 1.1, а затем прочитаете все обратно, вы найдете начальные заголовки ответа, за которыми следует некоторое количество фрагментов. Каждый блок имеет свой мини-заголовок, за которым следуют связанные данные. Если вам нужна информация в этих мини-заголовках, она есть для вас, но вам придется разбирать ее все для себя, так же, как вы должны анализировать заголовок ответа. Все эти детали обрабатываются для вас, когда вы используете высокоуровневый класс протокола, но опять же, детали также скрыты от вас, что является проблемой для ваших особых нужд.
Теперь, если бы вы читали до и включая заголовок первого чанка, он содержал бы длину этого чанка, так что вы бы точно знали, сколько байтов вы можете прочитать до конца чанка. Я верю, но я не уверен, что если вы попытаетесь прочитать после конца этого блока, а следующий блок не будет отправлен, Socket.Receive
прочитает столько, сколько сможет, и вернет фактическое число байтов. В любом случае, если вы будете осторожны, вы сможете начать обработку первого чанка, пока второй еще отправляется.
Это помогает?