WebResponse / HttpWebResponse的替代品

时间:2012-01-19 15:02:59

标签: c#

我正在尝试编写一个简单的程序来从网站返回状态代码。目前使用HttpWebRequest和HttpWebResponse类。然而,它们的工作方式对我来说似乎很糟糕,状态代码仅在其200 / OK时返回,而所有其他代码都给出了一个webexception。

虽然我可以从异常中读取响应并获取状态代码,但我想知道是否有任何其他替代方案不会导致异常。据我所知,异常代价高昂,应该在出现严重问题的情况下保留。这对我的申请并不重要,但除非绝对必要,否则我宁愿避免例外。

还有其他选择吗?

编辑:

这是一些代码

HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create("http://www.randomsite.com");
            request.Method = "HEAD";
            try
            {
                HttpWebResponse response = (HttpWebResponse) request.GetResponse();
                Console.WriteLine("Status: " + response.StatusCode);

                response.Close();
            }
            catch (WebException ex)
            {
                HttpWebResponse httpResponse = (HttpWebResponse) ex.Response;
                if (httpResponse != null)
                {
                    Console.WriteLine("Status: " + httpResponse.StatusCode);
                }
            }

2 个答案:

答案 0 :(得分:3)

虽然例外情况很昂贵,但它们比网络请求的成本低十倍。所以只需包装HttpWebResponse就可以返回状态代码并忘记费用。

答案 1 :(得分:0)

  

我正在尝试编写一个简单的程序来从网站返回状态代码。

什么状态?你只是想知道应用程序是否正在运行? HttpWebResponse.StatusCode返回响应的状态,而不是网站的状态。如果您返回200以外的任何内容,则表示请求无效或由于某种原因无法处理。

我同意欧根的观点,你不应该关注这种情况下的表现,但我觉得你也在咆哮错误的树。