C# – 从WebRequest获取响应并处理状态代码

前端之家收集整理的这篇文章主要介绍了C# – 从WebRequest获取响应并处理状态代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为.NET应用程序编写一个更新系统,此刻我陷入僵局.我尝试在远程服务器及其内容获取文件.为此,如果操作失败,我想使用HttpWebRequest获取内容和状态代码.

我构建了一个包含交换机查询函数,并且每个部分询问状态代码,然后执行一个操作.

这看起来如下:

public void AskStatusCode(int code)
{
  switch (code)
  {
  case 404:
     // Do an action
     break;

  case 405:
     // Do an action
     break;
  }
}

好的,就是这样.现在我创建了一个HttpWebRequest和一个HttpWebResponse.

HttpWebRequest requestChangelog = (HttpWebRequest)HttpWebRequest.Create(url);
requestChangelog.Method = "GET";

HttpWebResponse changelogResponse = (HttpWebResponse)requestChangelog.GetResponse();

// Now call the function and set the status code of the response as parameter.
AskStatusCode((int)changelogResponse.StatusCode);

所以理论应该有效,但不行.对于特殊状态代码,我不会对“case”-block进行任何操作.

我从远程服务器中删除了该文件,以测试它是否会执行代码为“404”的case-block,但它总是显示一个异常(远程服务器回答404),但不是我希望这个状态代码可以处理.

所以,我的问题是,为什么这不行?类型是整数,我将状态代码转换为Int32,您可以看到…

对于您的信息:状态代码已被检查后,如果可以,我想用流读取器和ResponseStream读取内容.

帮助将不胜感激
对不起,如果你不明白,我尽可能的说清楚.

解决方法

您必须检查响应是否由于服务器错误(WebException提供WebResponse)而失败.
也许这将有助于您:
HttpWebResponse response = null;

        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com/thisisadeadlink");
            request.Method = "GET";

            response = (HttpWebResponse)request.GetResponse();

            StreamReader sr = new StreamReader(response.GetResponseStream());
            Console.Write(sr.ReadToEnd());
        }
        catch (WebException e)
        {
            if (e.Status == WebExceptionStatus.ProtocolError)
            {
                response = (HttpWebResponse)e.Response;
                Console.Write("Errorcode: {0}",(int)response.StatusCode);
            }
            else
            {
                Console.Write("Error: {0}",e.Status);
            }
        }
        finally
        {
            if (response != null)
            {
                response.Close();
            }
        }
原文链接:https://www.f2er.com/csharp/94548.html

猜你在找的C#相关文章