Многие решения говорят об обходном пути, но не об истинной причине ошибки.
Одной из возможных причин этой ошибки является то, что веб-сервер использует кодировку, отличную от ASCII
или ISO-8859-1
, для вывода раздела ответа заголовка. Причина использования ISO-8859-1
может быть в том случае, если Response-Phrase
содержит расширенные латинские символы.
Другая возможная причина этой ошибки - использование веб-сервером UTF-8
, который выводит маркер порядка байтов (BOM). Например, постоянная по умолчанию Encoding.UTF8
выводит спецификацию, и это легко забыть. Веб-страницы будут работать корректно в Firefox и Chrome, но HttpWebRequest
будет бомбить :). Быстрое решение состоит в том, чтобы изменить веб-сервер для использования кодировки UTF-8, которая не выводит спецификацию, например new UTF8Encoding(false)
(что нормально, если Response-Phrase
содержит только символы ASCII, но на самом деле он должен использовать ASCII
или ISO-8859-1
для заголовков, а затем UTF-8
или другую кодировку для ответа).