Asp.net HttpWebResponse - 我怎么能不依赖 WebException 进行流量控制?
Posted
技术标签:
【中文标题】Asp.net HttpWebResponse - 我怎么能不依赖 WebException 进行流量控制?【英文标题】:Asp.net HttpWebResponse - how can I not depend on WebException for flow control? 【发布时间】:2010-06-09 12:56:38 【问题描述】:我需要检查请求是否会返回 500 服务器内部错误(因此会出现错误)。我正在这样做:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
return true;
else
return false;
但是当我收到 500 Internal Server Error 时,会抛出一个 WebException,我不想依赖它来控制应用程序流 - 这怎么办?
【问题讨论】:
【参考方案1】:我认为这篇 MSDN 文章会对你有所帮助:http://msdn.microsoft.com/en-us/library/system.net.webexception.status.aspx
【讨论】:
【参考方案2】:确实,鉴于 msdn 的示例,没有办法不依赖于控制流的异常。这是他们给出的例子:
try
// Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site");
// Get the associated response for the above request.
HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();
catch(WebException e)
Console.WriteLine("This program is expected to throw WebException on successful run."+
"\n\nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError)
Console.WriteLine("Status Code : 0", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : 0", ((HttpWebResponse)e.Response).StatusDescription);
catch(Exception e)
Console.WriteLine(e.Message);
显然,有时您确实必须走那条路。啊,好吧。
【讨论】:
以上是关于Asp.net HttpWebResponse - 我怎么能不依赖 WebException 进行流量控制?的主要内容,如果未能解决你的问题,请参考以下文章
HTTPWebResponse + StreamReader 非常慢
使用HttpWebRequest请求API接口以及其他网站资源