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对象重新放在异常对象中?
为什么不可以不抛出异常直接运行下去?
这种做法有点画蛇添足:不但这种异常抛出无用,而且还有不少的反作用。
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对象重新放在异常对象中?
为什么不可以不抛出异常直接运行下去?
这种做法有点画蛇添足:不但这种异常抛出无用,而且还有不少的反作用。
相关文章推荐
- HttpWebRequest编程相关问题(5)
- HttpWebRequest编程相关问题(2)
- HttpWebRequest编程相关问题(3)
- HttpWebRequest 编程相关问题
- HttpWebRequest编程相关问题(6)
- HttpWebRequest编程相关问题(4)
- HttpWebRequest编程相关问题阶段总结
- HttpWebRequest使用问题
- System.Net.HttpWebRequest.GetRequestStream超时问题
- C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例
- 解决WebClient或HttpWebRequest首次连接缓慢问题
- 解决WebClient或HttpWebRequest首次连接缓慢问题
- 【转】System.Net.HttpWebRequest请求超时的问题解决方法
- C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例
- C#中HttpWebRequest性能问题
- 解决.net webservice的WebClient或HttpWebRequest首次连接缓慢问题
- HttpWebRequest 首次连接缓慢问题
- C# httpwebrequest post 发送的数据 urlencode 问题
- HttpWebRequest多线程性能问题,请求超时的错误
- 在多线程环境下使用HttpWebRequest或者调用Web Service(连接报超时问题)