C# HttpWebRequest - 如何确定是否发生 HTTP 301

作者:编程家 分类: 编程代码 时间:2025-09-14

使用C#编程语言进行网络请求是非常常见的需求。在C#中,我们可以使用HttpWebRequest类来发送HTTP请求。在实际的开发中,有时候我们需要判断返回的HTTP状态码,例如判断是否发生了HTTP 301跳转。本文将介绍如何使用C#中的HttpWebRequest类来确定是否发生了HTTP 301跳转,并提供一个简单的示例代码。

什么是HTTP 301跳转?

HTTP 301是HTTP协议中的一个状态码,表示永久性重定向。当一个URL发生了永久性变化,服务器会返回HTTP 301状态码,并在响应头中包含一个Location字段,告诉客户端请求的资源已经永久地移动到了新的URL上。客户端收到HTTP 301响应后,会自动重定向到新的URL。

如何判断是否发生了HTTP 301跳转?

在C#中,可以通过检查HttpWebResponse对象的StatusCode属性来确定返回的HTTP状态码。如果StatusCode为MovedPermanently(301),则表示发生了HTTP 301跳转。

下面是一个简单的示例代码,演示如何使用C#中的HttpWebRequest类来判断是否发生了HTTP 301跳转:

csharp

using System;

using System.Net;

class Program

{

static void Main()

{

string url = "http://example.com";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.AllowAutoRedirect = false;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.MovedPermanently)

{

Console.WriteLine("发生了HTTP 301跳转");

string newUrl = response.Headers["Location"];

Console.WriteLine("新的URL为:" + newUrl);

}

else

{

Console.WriteLine("未发生HTTP 301跳转");

}

response.Close();

}

}

在上面的示例代码中,我们首先创建了一个HttpWebRequest对象,并设置了AllowAutoRedirect属性为false,这样就禁止了自动重定向。然后发送HTTP请求并获取响应。最后,我们通过检查响应的StatusCode属性来判断是否发生了HTTP 301跳转。如果发生了HTTP 301跳转,我们可以从响应头中的Location字段获取新的URL。

本文介绍了如何使用C#中的HttpWebRequest类来判断是否发生了HTTP 301跳转。通过检查响应的StatusCode属性,我们可以确定返回的HTTP状态码,并在需要时获取新的URL。希望本文对你有所帮助!