在使用C#模仿http请求,获取某个网页信息的时候,可能会出现以下错误
出现这个问题的原因是因为(HttpWebResponse)req.GetResponse(); 这行代码中做了如下一件事情:
当服务器段ASP.net程序有 Exception 发生时,客户端应用程序接受了HTTP 协议错误后。把这个HTTP 协议错误转换成 Status 设置为 WebExceptionStatus.ProtocolError 的 WebException,并且把这个异常throw出来。
所以解决办法就是将代码改成不论错误发生与否,都可以获得服务器段页面的源代码。
代码如下
try
{
this.response = (HttpWebResponse)this.request.GetResponse();
}
catch(WebException ex)
{
this.response = (HttpWebResponse)ex.Response;
}
这样问题就解决了
运行效果如下