Сначала я бы порекомендовал вам ознакомиться с RFC-2616 , который является RFC для протокола HTTP 1.1.
Из приведенного выше RFC вы найдете следующее утверждение
Правило TEXT используется только для содержимого описательного поля и значений
, которые не предназначены для интерпретации анализатором сообщений.Слова
из * TEXT МОГУТ содержать символы из наборов символов, отличных от ISO-
8859-1 [22], только если они закодированы в соответствии с правилами RFC 2047
[14].
Заголовки должны использовать кодировку ISO-8859-1, если они не кодируются с использованием кодировки MIME, описанной в RFC-2047.
Что касается синтаксического анализа ответа, который действительно зависит от сообщения.Лично я обработал бы ответ, основанный на BNF, определенном для HTTP, поскольку я идентифицирую токены, которые, как я узнаю, обновил бы состояние анализатора, чтобы обработать остальную часть ответа соответственно.Например, при обработке данных ответа вы можете обнаружить, что ответом является изображение JPG, а длина содержимого равна X, поэтому вы можете настроить соответствующий поток памяти для чтения содержимого, а затем создать изображение и т. Д.