- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是一个让我感到困惑的一般性问题。我认为一旦发出 REST 请求,错误就会通过 WebException
返回。在一种情况下,我得到了一个 HttpRequestException
,它不允许我获取 HTTP 状态代码。
我是新手,但它们之间有什么区别?为什么有两种类型?什么时候使用一个而不是另一个?
WebException
似乎运行良好。 HttpRequestException
似乎是它的一个非常弱的版本,它知道状态代码(在它的消息中)但它不会明确地告诉我它是什么。
编辑:我正在使用 HttpClient
。具体调用 client.GetStreamAsync()
。
最佳答案
存在三种不同的失败场景:
a) 您无法连接到服务器或代理,在这种情况下会抛出 HttpRequestException。请注意,如果您的服务器已关闭并且您正在运行 fiddler,您将永远不会看到此异常,您将获得 5XX 状态代码。
b) 当读/写网络流时,有某种中断你会得到一个 IOException。
c) 您将收到带有 4XX/5XX 状态代码的 HttpStatusCode 的响应。如果您的客户端应用程序选择调用 response.EnsureSuccessStatusCode(),则会抛出 HttpRequestException。
如果您决定调用 EnsureSuccessStatusCode,那么您就做出了一个明确的决定,即除了它是成功/失败这一事实之外,您不关心状态代码。
如果您真的需要冒泡一个异常,然后再处理状态代码,那么我建议您创建自己的扩展方法来替换 EnsureSuccessStatusCode 并创建您自己的可以存储状态代码的异常。或者最好根据您希望采取的纠正措施将状态代码转换为几个不同的异常之一。
关于c# - HttpRequestException 与 WebException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22382373/
我正在与来自 .Net 的 Web 服务器通信。 Web 服务器抛出 500 内部服务器错误并写入详细的错误消息。 我正在尝试读取从 Web 异常收到的错误消息,但收到另一个 Web 异常。为什么抛出
我有以下从 Internet 检索网页的 F# 程序: open System.Net [] let main argv = let mutable pageData : byte[] = [
我有以下功能将通过代理获取某些网站的 html 源,它工作正常,除了有时服务器返回 503(服务器不可用)或它永远不会进入 catch 语句的任何其他异常。 在 catch 语句中,该函数应该递归调用
我制作了一些假类,它应该具有与原始类相同的行为。原始类有时会抛出 WebExceptions(使用 StatusCode 作为服务器的响应)。 我想在没有任何联系的情况下重复此行为。那么,我如何使用所
我在我的 Web API 服务(经过 Windows 验证)中使用 WebClient 对我们的公司目录(经过 Windows 验证)进行 HTTP 调用以获取用户的配置文件。请看下面。 public
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 个月前。 Improv
我正在扫描具有多个路径示例的单个 url:http://url.com/path1 到 1000。有时我得到一个 WebException 但在我的 catch block 中,如果我不使用该行,它会
我有以下方法,基本上是使用 Facebook 凭据对用户进行身份验证。出于某种原因,我在尝试处理授权 key (代码)时收到了 WebException。因此,我尝试读取响应流以了解发生了什么,但在读
当我运行下面的测试(NUnit 和 VS2008 SP1)时,我得到以下错误 预期:连接失败 但是是:UnknownError 谁能解释我做错了什么? [Test] public void Seria
我正在开发 Winforms 应用程序并使用 C# 作为开发语言。在一个地方,我需要向 URL 发送请求并接收反馈。 我在 try catch block 中使用我的代码并捕获了 WebExcepti
我有 C# 代码对 OData Web 服务执行 POST,从而将记录插入到数据库中。如果出现异常,比如违反主键,我想捕获并记录错误信息。但是,该消息包含在 XML 中。这是我的异常处理程序: cat
当我在调度程序线程上执行以下代码时,每次我开始使用新的模拟器进行调试时,我的 Windows Phone 应用程序都会抛出 WebException 异常: public MainPage() {
我在 Android 的 Mono 上使用 WebRequests,对于某些服务器,证书验证失败。我已经实现了 ICertificatePolicy(因为从未调用过 ServerCertificate
这是一个让我感到困惑的一般性问题。我认为一旦发出 REST 请求,错误就会通过 WebException 返回。在一种情况下,我得到了一个 HttpRequestException,它不允许我获取 H
如何获取WebException错误中的错误号? try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("
我正在使用一个简单的 Web 客户端从 Web 服务中检索一些 XML,我将其封装在一个简单的 try、catch block (捕获 WebException)中。像下面这样; try
假设我创建并执行了一个 System.Net.FtpWebRequest。 我可以使用 catch (WebException ex) {} 来捕获此请求抛出的任何与网络相关的异常。但是,如果我有一些
我正在尝试连接到 FTP 服务器并下载文件,但遇到了一些问题。 最初我使用的是 WebClient.DownloadFileAsync,对于小文件它工作正常,但对于大文件会到达下载结束但永远不会调用
环境 Windows 8.1 Visual Studio 2017社区 C# WPF应用程序 问题 YoutubeExtractor在下载视频时引发System.Net.WebException。 我
我使用 MVC4 Web API 创建了一个 RESTful 网络服务。如果出现问题,我将抛出 WebException。 throw new WebException("Account not fo
我是一名优秀的程序员,十分优秀!