您的位置:首页 > 理论基础 > 计算机网络

HttpWebRequest编程相关问题(1)

2007-07-10 21:29 465 查看
在HttpWebRequest中,如果你使用了如下代码:

HttpWebResponse oResponse = (HttpWebResponse)oRequest.GetResponse();

那么当你的HttpWebRequest访问某个页面时出现500错误,并且执行上面这步时

这个时候HttpWebRequest将抛出一个异常WebException,上面这步将不会运行

你原本的oResponse对象是不会存在的

相关的解决方法是捕获这个异常,从异常对象上获取Response。代码


try




...{


oResponse = (HttpWebResponse)oRequest.GetResponse();


}


catch (WebException ex)




...{


oResponse = (HttpWebResponse)ex.Response;


}

虽然系统出现了500错误,但是并不代表一切,比如下面的返回数据:

HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Tue, 10 Jul 2007 12:43:29 GMT
X-Powered-By: ASP.NET

HTTP/1.1 500 Internal Server Error
Server: Microsoft-IIS/5.0
Date: Tue, 10 Jul 2007 12:43:29 GMT
X-Powered-By: ASP.NET
Content-Length: 663
Content-Type: text/html
Set-Cookie: oblog=CookieDate=3&Password=xxxxxx&UserLevel=7&UserName=xxxx; expires=Tue, 08-Jul-2008 16:00:00 GMT; path=/
Cache-control: private

<html>
<head>
<script>window.location = 'http://xxx.cn/indexlogin.asp';</script> <font face="宋体" size=2>
<p>Microsoft VBScript 运行时错误</font> <font face="宋体" size=2 > 错误 '800a01a8'</font>
<p>
<font face="宋体" size=2>缺少对象: 'rs'</font>
<p>
<font face="宋体" size=2>/User_ChkLogin.asp</font><font face="宋体" size=2>,行108</font>

虽然页面500了,但是这个页面在运行时却传回了Cookies值,并且告诉浏览器跳转到'http://xxx.cn/indexlogin.asp'

如果不捕获这个Response对象的话,这里的Cookies值是得不到的。

很疑惑的是为什么Microsoft在设计webRequest对象时遇到500错误会抛出一个异常,而把Response对象重新放在异常对象中?

为什么不可以不抛出异常直接运行下去?

这种做法有点画蛇添足:不但这种异常抛出无用,而且还有不少的反作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: