HttpWebRequest编程相关问题(1)

在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对象重新放在异常对象中?

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

这种做法有点画蛇添足:不但这种异常抛出无用,而且还有不少的反作用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值