首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#中正确检查HttpResponseMessage的http状态码?

在C#中正确检查HttpResponseMessage的HTTP状态码,可以通过以下步骤实现:

  1. 首先,发送HTTP请求并获取HttpResponseMessage对象。可以使用HttpClient类来发送请求并接收响应。
  2. 然后,通过检查HttpResponseMessage的StatusCode属性来获取HTTP状态码。StatusCode是一个枚举类型,表示HTTP响应的状态。
  3. 接下来,可以使用switch语句或if语句来根据不同的状态码执行相应的操作。以下是一些常见的HTTP状态码及其含义:
    • 200:请求成功
    • 201:已创建
    • 400:请求无效
    • 401:未授权
    • 404:未找到
    • 500:服务器内部错误
  • 如果需要进一步处理响应内容,可以使用HttpResponseMessage的Content属性来获取响应的内容。

以下是一个示例代码,演示如何在C#中检查HttpResponseMessage的HTTP状态码:

代码语言:txt
复制
using System;
using System.Net.Http;

class Program
{
    static async void CheckHttpResponse()
    {
        HttpClient client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync("https://example.com");

        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine("请求成功");
            // 执行成功时的操作
        }
        else if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
        {
            Console.WriteLine("请求无效");
            // 执行请求无效时的操作
        }
        else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
        {
            Console.WriteLine("未授权");
            // 执行未授权时的操作
        }
        else if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
        {
            Console.WriteLine("未找到");
            // 执行未找到时的操作
        }
        else if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError)
        {
            Console.WriteLine("服务器内部错误");
            // 执行服务器内部错误时的操作
        }
        else
        {
            Console.WriteLine("其他状态码:" + response.StatusCode);
            // 执行其他状态码时的操作
        }
    }

    static void Main(string[] args)
    {
        CheckHttpResponse();
        Console.ReadLine();
    }
}

请注意,以上示例代码仅演示了如何检查HTTP状态码,并根据不同的状态码执行相应的操作。实际应用中,您可能需要根据具体的业务需求进行适当的处理和错误处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#开发,如何从header解析数据

C#,当使用HttpClient类向API发送请求并接收到响应时,可以从响应Headers属性解析HTTP头部(Header)数据。...HttpResponseMessage对象Headers属性是一个HttpResponseHeaders集合,它包含了响应所有HTTP头部。...以下是一个如何从HTTP响应头部解析数据示例:首先,确保项目中已经包含了System.Net.Http命名空间。...然后,我们检查响应是否成功(即HTTP状态在200-299范围内),并尝试从响应Headers集合获取Content-Type和自定义X-Custom-Header头部信息。...这是因为HTTP头部可能包含多个具有相同名称值(尽管这在实践并不常见)。如果找到了对应头部,则可以遍历返回集合来访问这些值。

13310

ASP.NET Web API编程——控制器

2控制器操作返回值 类型 说明 void 操作返回值为void时,Web API返回空HTTP响应,其状态为204(无内容) HttpResponseMessage Web api会将此返回值直接转换为...public override string ToString(); } 2.1.1设置响应状态: 可以通过构造函数设置响应状态,也可以通过StatusCode 属性设置响应状态。...protected internal virtual NotFoundResult NotFound();返回NotFoundResult,创建一个状态为404空响应。...protected internal virtual OkResult Ok();返回值为OkResult ,创建一个状态为200空响应。...2.3返回值为内置类型或自定义类型 返回值为内置类型或自定义类型时,Web API使用格式化器序列化返回值,并将其写入HTTP消息,响应状态为200。

2.2K50

asp.net core之HttpClient

通过示例代码展示,读者可以了解如何使用HttpClient发送HTTP请求并处理响应,以及如何使用HttpClientFactory来解决HttpClient一些问题,资源泄漏和性能问题。...然后,我们通过EnsureSuccessStatusCode方法确保响应状态为成功状态。最后,我们通过ReadAsStringAsync方法读取响应内容,并将其打印到控制台上。...这样HttpClient生命周期将由HttpClientFactory管理,确保它在不再使用时被正确地释放。...在配置HttpClient回调,我们可以进行相应配置,设置BaseAddress等。...通过示例代码展示,读者可以了解如何使用HttpClient发送HTTP请求并处理响应,以及如何使用HttpClientFactory来解决HttpClient一些问题,资源泄漏和性能问题。

36120

Asp.Net Web API 2第七课——Web API异常处理

在默认情况下,大多数异常都被转换为一个带有状态500内部服务器错误HTTP响应。 这个HTTPResponseException类型是一个特殊类型。...这种异常会返回你在异常构造器中指定任何HTTP状态。例如,在以下方法,如果这个id参数无效,那么会返回“404——未找到”。...以下是将NotImplementedException异常转换成HTTP状态“501 — 未实现”一个过滤器: using System; using System.Net;...以下示例演示了如何用HttpError在响应体返回HTTP状态“404 — 未找到”: public HttpResponseMessage GetProduct(int id) { Product...但如果所请求产品未找到,则HTTP响应会在请求体包含一个HttpError。

87230

使用 System.Net.Http.Json 高效处理Json数据

在这篇文章,我将介绍一个名为 System.Net.Http.Json 扩展库,它最近添加到了 .NET ,我们看一下这个库能够给我们解决什么问题,今天会介绍下如何在代码中使用。.../json”, 我拿到Json响应内容后,我需要手动处理响应,通常会验证响应状态代码是否为200,检查内容是不是为空,然后再试图从响应内容流反序列化 如果我们使用 Newtonsoft.Json, 代码可能是像下边这样...来判断状态是否成功,如果状态在 200-299 之外,会抛出异常 并且这个库还会检查是不是有效媒体类型,比如 application/json, 如果媒体类型错误,将抛出 NotSupportedException...Json 在某些情况下,您可能想要发送请求自定义 Header , 或者你想反序列化之前检查 Response Header,这也可以使用 System.Net.Http.Json 提供扩展方法 private...总结 在这篇文章,我们回顾了一些传统方法,可以用来从HttpResponseMessage 来反序列化对象,我们看到,当手动调用api来解析JSON, 我们首先需要考虑比如响应状态是成功, 并且是我们需要媒体类型

2.1K00

Asp.Net WebApi核心对象解析(二)

在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一既往扯扯淡,元旦刚过,整个人还是处于晕状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖坑...控制器分发还是一个消息处理程序,主要是选择、创建和调用正确控制器来处理请求。... HTTP 响应状态代码。...四.WebApi核心对象HttpClient:    上面介绍完服务器端接收和响应HTTP请求操作方法,接下来介绍一个客户端生成HTTP请求,用与请求和获取服务器返回消息,在新版本.NET,提供类...在发送HTTP请求之前,调用CheckRequestMessage方法对消息进行检查。在使用异步方法时,需要考虑操作取消等外部因素对方法影响。

3.1K100

Asp.Net WebAPI核心对象解析(三)

在命名空间System.Net.Http,具有两个核心对象:HttpRequestMessage和HttpResponseMessage。两个对象结构如下图: ?      ...this.CheckDisposed(); this.statusCode = value; } }      StatusCode属性为枚举属性,该属性可读可写,对于状态这个概念...,很多人都是比较了解,在HTTP协议状态主要是表示在消息请求在服务器处理结果,状态有2XX,3XX,4XX,5XX等等,具体表示意义就不再描述。      ...4.HTTP消息内容解析:       在.NET4.5版本HTTP模型HTTP消息正文由抽象基类HttpContent表示,HttpResponseMessage和HttpRequestMessage...SerializeToStreamAsync方法将传入流对象序列化,该方法为异步方法。     我们需要注意几点,主要为委托创建和使用,在C#,尽量使用有.NET提供委托类,不要自己去创建。

2.8K90

asp.net web api 向客户端返回错误信息

1使用Http状态 ASP.NET Web Api框架提供了Http状态值,如下图所示。 虽然有这些预定义状态,但在实际项目中使用自定状态结合预定义状态更有优势。...通过在适当位置抛出异常   throw new HttpResponseException 通过构造函数设置响应或Http状态,来实现向客户端返回相应执行状态。...相应地HttpResponseMessage如下图所示: 可通过构造函数设置状态,通过HttpResponseMessage.ReasonPhrase设置原因短语,但只支持英文字符,中文或其他语言文字显示乱码...自定义状态规则为: 1)必须是整数 2)必须小于999 3)600以内最好别用 此外消息短语不应很长,如果想更加详细表达消息,那么也可以使用代码代替消息,但要注意代码不能是三位数字,否则客户端无法正常获得消息内容...2 返回响应包含错误码和消息短语 使用Web api一般返回序列化后字符串,将错误码与消息短语也包括在序列化字符串内。但对于使用Odata协议来说,无法这样实现。

2.8K100

「译」使用 System.Net.Http.Json 高效处理Json

在这篇文章,我将介绍一个名为 System.Net.Http.Json 扩展库,它最近添加到了 .NET ,我们看一下这个库能够给我们解决什么问题,今天会介绍下如何在代码中使用。 ?.../json”, 我拿到Json响应内容后,我需要手动处理响应,通常会验证响应状态代码是否为200,检查内容是不是为空,然后再试图从响应内容流反序列化 如果我们使用 Newtonsoft.Json, 代码可能是像下边这样...来判断状态是否成功,如果状态在 200-299 之外,会抛出异常 并且这个库还会检查是不是有效媒体类型,比如 application/json, 如果媒体类型错误,将抛出 NotSupportedException...这种格式是现在经常使用,另外一个例子,可以发现这个库对于标准和细节处理,RFC7159 标准 定义一种携带机器可读HTTP响应错误,比如 application/problem+json, 我手写代码没有处理和匹配这些...总结 在这篇文章,我们回顾了一些传统方法,可以用来从HttpResponseMessage 来反序列化对象,我们看到,当手动调用api来解析JSON, 我们首先需要考虑比如响应状态是成功, 并且是我们需要媒体类型

1.2K20

Asp.Net Web API(二)

大多数客户端都可以解析JSON或XML。此外,客户端可以声明它想要通过HTTP请求消息设置接收标头那种格式。        ...var item = repository.Get(id); 4 if (item == null) 5 //未找到抛出一个404状态异常...这个参数被映射到URI路径id字段。这个Asp.Net Web API框架自动把id参数转换为正确int数据类型,如果id无效,就会抛出一个HttpResponseException异常。...理想情况下,我们希望HTTP响应。包含以下内容:        响应代码:在默认情况下,这个Web API框架设置响应状态为200(OK)。...通过返回HttpResponseMessage而不是产品,我们可以控制HTTP响应消息,包括状态代码和位置标头详细信息。

1.9K10

C#爬虫项目实战:如何解决Instagram网站封禁问题

在本文中,我们将探讨如何利用C#编写网络爬虫项目,并通过使用代理IP来解决爬取Instagram网站时可能遇到封禁问题。1....技术实现在本项目中,我们将使用C#编写一个简单网络爬虫程序,通过请求InstagramAPI来获取数据。同时,我们将使用代理IP来隐藏真实IP地址,减少被封禁可能性。...首先,我们需要引入相关C#库,HttpClient用于发送HTTP请求,Newtonsoft.Json用于处理JSON数据等。...using System;using System.Net.Http;using Newtonsoft.Json;然后,我们需要编写一个函数来发送HTTP请求,并处理返回JSON数据。...最后,我们可以在主程序调用该函数,并对返回JSON数据进行解析和处理:static async Task Main(string[] args){ string username = "example

17110

C# 一些关键高级特性

本文将深入探讨 C# 一些关键高级特性,并展示如何在实际编程中有效利用它们。 1....异步编程与 async 和 await 关键字 背景 在现代应用程序,异步编程非常重要,尤其是在处理 I/O 操作时,读取文件、访问网络资源或与数据库交互。...这不仅提高了代码重用性,还能在编译时提供类型检查,从而避免运行时错误。...属性(Properties) 背景 属性是 C# 一种特殊成员,提供了对字段受控访问。它们使得我们能够在访问字段时添加额外逻辑,例如验证和变更通知。...传统值类型( int、double)不能直接表示空值,导致我们不得不使用额外标志位或特殊值来处理这种情况。

22341

http响应Last-Modified和ETag以及asp.net web api实现

在浏览器第一次请求某一个URL时,服务器端返回状态会是200,内容是你请求资源,同时有一个Last-Modified属性标记此文件在服务期端最后被修改时间,格式类似这样: Tue, 24 Apr...: Tue, 24 Apr 2012 13:53:56 GMT 如果服务器端资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态,内容为空,这样就节省了传输数据量。...5,服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空响应体。...Header),服务器端返回状态会是200,格式类似如下: HTTP/1.1 200 OK Cache-Control: public, max-age=1728000 Transfer-Encoding...协议规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应并记录相关记录属性标记文件没有发生改动,服务器端返回304,直接从缓存读取: HTTP/1.1 304 Not

82350

asp.net core 使用HttpClientFactory Polly实现熔断降级

前言 在NET Core2.1后也是增加更新了很多东西,当然HttpClientFactory更新一部分.虽然说HttpClient这个实现了disposable,但使用它时候用using包装块方式通常不是最好选择...需要不同基地址,不同HTTP 标头和其他对请求个性化操作场景时,需要动手管理多个HttpClient实例,为了简化HttpClient实例管理,.NET Core 2.1提供了一个新HTTPClientFactory...HttpClient 已经有了委托处理程序概念,这些处理程序可以链接在一起用于传出HTTP 请求。...您将HTTP 客户端注册到工厂,并且可以使用Polly处理程序将Polly策略用于Retry,CircuitBreakers 等。...请求错误,HTTP 5XX 状态HTTP 408 状态 以及System.Net.Http.HttpRequestException异常 }).AddTransientHttpErrorPolicy

87710

小工具 --- 百度翻译API翻译工具

使用您百度账号登录百度翻译开放平台; 注册成为开发者,获得 APPID ; 进行开发者认证(仅需标准版可跳过); 开通通用翻译API服务:开通链接; 参考技术文档和 Demo 编写代码。...签名生成分为两步: 将请求参数 APPID(appid), 翻译 query(q,注意为UTF-8编码),随机数(salt),以及平台分配密钥(可在管理控制台查看) 按照 appid+q+salt...q 做 URL encode; 如遇到报 54001 签名错误,请检查签名生成方法是否正确,在对 sign 进行拼接和加密时,q 不需要做 URL encode,很多开发者遇到签名报错均是由于拼接...控制台程序Demo 接下来根据自己需要,参考上文中参数,编写C#控制台程序,测试调用API接口。...HttpClient client = new HttpClient()) { // 发送GET请求并获取响应内容 HttpResponseMessage

33110

dotnet core 不自动从 https 到 http 302 重定向

https 链接返回 302 状态,且跳转链接是一个 http 链接,那将不会自动跳转 默认情况下,咱可以通过设置 HttpClient HttpClientHandler 从而设置 AllowAutoRedirect...https 链接,且此链接返回 302 跳转到一个 http 链接上,那使用 HttpClient 将不会自动跳转,而是返回 302 状态,且在 Header Location 上写明了后台返回...http 链接 这是 dotnet core 设计如此,可以通过本文参考看到大佬们讨论 由于从 https 跳转到 http 在大部分时候来说,都是十分诡异行为。...= httpResponseMessage; if (httpResponseMessage.StatusCode == HttpStatusCode.Redirect)...{ var location = httpResponseMessage.Headers.Location; if (location is

1.4K30

asp.net core 使用HttpClientFactory Polly实现熔断降级

前言 在NET Core2.1后也是增加更新了很多东西,当然HttpClientFactory更新一部分.虽然说HttpClient这个实现了disposable,但使用它时候用using包装块方式通常不是最好选择...需要不同基地址,不同HTTP 标头和其他对请求个性化操作场景时,需要动手管理多个HttpClient实例,为了简化HttpClient实例管理,.NET Core 2.1提供了一个新HTTPClientFactory...HttpClient 已经有了委托处理程序概念,这些处理程序可以链接在一起用于传出HTTP 请求。...您将HTTP 客户端注册到工厂,并且可以使用Polly处理程序将Polly策略用于Retry,CircuitBreakers 等。...请求错误,HTTP 5XX 状态HTTP 408 状态 以及System.Net.Http.HttpRequestException异常 }).AddTransientHttpErrorPolicy

79930

Asp.Net Web API 2第十四课——Content Negotiation(内容协商)

HTTP内容协商主要机制是以下请求报头: Accept:响应可接收媒体类型,“application/json”、“application/xml”,或者自定义媒体类型,“application...Accept-Charset:可接收字符集,“UTF-8”或“ISO 8859-1”。 Accept-Encoding:可接收内容编码,“gzip”。...Accept-Language:优先选用自然语言,“en-us”。 服务器也可以查看HTTP请求其它选项。...服务器以一个Product对象JSON表示作出了响应。注意,响应Content-Type报头已被设置成“application/json”。...你可以设置状态、添加HTTP报头等等。 对资源进行序列化对象叫做媒体格式化器。媒体格式化器派生于MediaTypeFormatter类。

79210
领券