C# – 从WebRequest获取响应并处理状态代码
发布时间:2020-12-15 06:48:45 所属栏目:百科 来源:网络整理
导读:我正在为.NET应用程序编写一个更新系统,此刻我陷入僵局.我尝试在远程服务器及其内容上获取文件.为此,如果操作失败,我想使用HttpWebRequest获取内容和状态代码. 我构建了一个包含交换机查询的函数,并且每个部分询问状态代码,然后执行一个操作. 这看起来如下:
我正在为.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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |