Я нажимаю сервер со следующим кодом и сталкиваюсь с ошибкой ServerProtocolViolation:
// Prepare the webpage
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url + queryString);
// execute the request
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Кто-нибудь знает, как обойти эту ошибку?
Эта ошибка означает, что веб-сервер, на который вы отправляете запрос, не соответствует стандарту HTTP.
Помимо исправления сервера или перезаписи HttpWebRequest
, чтобы быть более щедрым, вы не можете сделать это.
Какой URL-адрес вы запрашиваете и какой текст исключения?
EDIT. Если вы запросите URL-адрес в Fiddler, вы увидите, что сервер didn Не возвращайте заголовки. Вам следует связаться с владельцем сервера и подать жалобу.
В качестве обходного пути, если вы запускаете Fiddler при отправке запроса, Fiddler будет исправлять ответ и разрешать HttpWebResponse для его анализа.
Просто быстрая заметка по другой причине, которую я испытал:
Если вы настроите свой запрос на использование прокси-сервера (т.е. через HttpWebRequest.Proxy
свойство), и вы используете неправильный порт прокси, возможно, также будет возможность увидеть эту ошибку.
В моем случае я сконфигурировал http://127.0.0.1/
как прокси-сервер, но вместо этого был действительный прокси-сервер, работающий на http://127.0.0.1:808/
(т.е. порт "808" вместо "80" ).
Если это так, попробуйте использовать прокси-сервер или, конечно, настройте правильный порт прокси.