我正在使用以下代码访问服务器并遇到ServerProtocolViolation错误:
// Prepare the webpage
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url + queryString);
// execute the request
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
有谁知道如何解决这类错误?
答案 0 :(得分:3)
此错误表示您发送请求的网络服务器不符合HTTP标准。
除了修复服务器或重写HttpWebRequest
更加慷慨之外,你无能为力。
您要求的是什么网址,以及该例外的文字是什么?
编辑:如果您在Fiddler中请求网址,则会看到服务器未返回任何标头。您应该联系服务器的所有者并投诉。
作为一种解决方法,如果您在发送请求时运行Fiddler,Fiddler将修复响应并允许HttpWebResponse解析它。
答案 1 :(得分:0)
快速说明我遇到的另一个原因:
如果您将请求配置为使用代理服务器(即通过HttpWebRequest.Proxy
property),并且使用了错误的代理端口,则可能还有机会看到该错误。
在我的情况下,我将http://127.0.0.1/
配置为代理,但实际代理服务器在http://127.0.0.1:808/
上运行(即端口“808”而不是“80”)。
如果是这种情况,请尝试不使用代理,或者配置正确的代理端口。