C# HttpWebRequest 与 WebRequest

c++

1个回答

写回答

niujianan

2025-07-08 08:05

+ 关注

使用 C# 中的 HttpWebRequest 和 WebRequest 进行网络请求

在 C# 开发中,我们经常需要与网络进行交互,例如发送 HTTP 请求获取数据或上传文件等。为了实现这些功能,C# 提供了 HttpWebRequest 和 WebRequest 两个类来处理网络请求。

## HttpWebRequest 类

HttpWebRequest 类是 WebRequest 的一个派生类,用于发送 HTTP 请求并接收响应。它提供了一系列属性和方法,使我们能够灵活地控制请求的各个方面。

创建 HttpWebRequest 对象

要创建 HttpWebRequest 对象,我们可以使用 WebRequest 的 Create 方法,并将其强制转换为 HttpWebRequest 类型。下面是一个简单的示例:

csharp

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");

设置请求的属性

我们可以通过 HttpWebRequest 对象的属性来设置请求的各个属性,例如请求的方法、超时时间、代理等。下面是一些常用的属性:

csharp

request.Method = "GET"; // 设置请求方法为 GET

request.Timeout = 5000; // 设置超时时间为 5 秒

request.Proxy = new WebProxy("http://proxy.example.com"); // 设置代理

发送请求并获取响应

一旦我们设置好了请求的各个属性,就可以使用 GetResponse 方法发送请求并获取响应。该方法将返回一个 WebResponse 对象,我们可以通过它来获取响应的各个属性和内容。

csharp

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

关闭请求和响应

在完成请求和获取响应后,我们应该及时关闭它们。可以使用 Close 方法来关闭 HttpWebRequest 和 HttpWebResponse 对象。

csharp

request.Close();

response.Close();

## WebRequest 类

WebRequest 类是一个抽象类,是所有网络请求的基类。它提供了一些通用的属性和方法,可以用于发送不同类型的网络请求。

创建 WebRequest 对象

要创建 WebRequest 对象,我们可以使用 WebRequest 的 Create 方法,并指定请求的 URI。下面是一个简单的示例:

csharp

WebRequest request = WebRequest.Create("http://www.example.com");

发送请求并获取响应

与 HttpWebRequest 类不同,WebRequest 类并没有提供直接发送请求和获取响应的方法。我们需要使用 GetResponse 方法获取一个 WebResponse 对象,然后通过它来获取响应的属性和内容。

csharp

WebResponse response = request.GetResponse();

关闭请求和响应

与 HttpWebRequest 类类似,我们在完成请求和获取响应后也需要关闭它们。可以使用 Close 方法来关闭 WebRequest 和 WebResponse 对象。

csharp

request.Close();

response.Close();

##

通过使用 C# 中的 HttpWebRequest 和 WebRequest 类,我们可以轻松地发送网络请求并获取响应。HttpWebRequest 类提供了更多的功能和灵活性,适用于发送 HTTP 请求;而 WebRequest 类则是一个通用的基类,可以用于发送不同类型的网络请求。无论是哪种类,我们都需要注意在使用完毕后关闭请求和响应,以释放资源。

案例代码:

下面是一个使用 HttpWebRequest 发送 GET 请求并获取响应的示例代码:

csharp

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");

request.Method = "GET";

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

string content;

using (StreamReader reader = new StreamReader(response.GetResponseStream()))

{

content = reader.ReadToEnd();

}

response.Close();

以上代码发送一个 GET 请求到 "http://www.example.com" 并读取响应内容。在实际使用时,我们可以根据需要设置请求的各个属性,并根据响应的内容进行进一步处理。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号