WebClient和HttpWebRequest区别

继承区别:

  HttpWebRequest 派生自 WebRequest 
  HttpWebResponse 派生自 WebResponse 
  WebClient 派生自 Component
  三个类的声明如下:
  [SerializableAttribute]
  public class HttpWebRequest : WebRequest, ISerializable
  [SerializableAttribute]
  public class HttpWebResponse : WebResponse, ISerializable
  [ComVisibleAttribute(true)]
  public class WebClient : Component
  也就是说WebClient在继承关系上和 HttpWebRequest没有啥关系

功能区别:

1、WebRequest是 .NET Framework 的用于访问 Internet 数据的请求/响应模型的抽象基类。使用该请求/响应模型的应用程序可以用协议不可知的方式从 Internet 请求数据,在这种方式下,应用程序处理 WebRequest 类的实例,而协议特定的子类则执行请求的具体细节,编程中使用的是子类HttpWebRequest
2、WebClient 类提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法,提供向 URI 标识的任何本地、Intranet 
或 Internet 资源发送数据以及从这些资源接收数据的公共方法,WebClient 类使用 WebRequest 类提供对 Internet 资源的访问
也就是说功能大致向同行,WebClient用来上传或下载数据,WebRequest用来请求服务器的监听,WebResponse获取服务器端的响应

对COOKIE和SEIION支持区别

WebClient不具持续性,因此不支持cookie和session,具体说来就是,常见的管理系统中,一般都有登录页和管理页,在登陆页输入用户名和密码,在管理页显示登录页输入的用户名,但是,WebClient实现不了这样的效果,在第一次请求登录页时,验证成功之后,WebClient不会保存http响应报文中的SetCookie,更不会设置下一次http请求报文的Cookie,因此跳转到管理页后,在管理页时接收不到存相应的cookie,因此,webclient更适用于多次请求没有联系的请求,而 WebRequest则相反

用户对是否自动url转向的控制

WebClient不支持
WebRequest支持(HttpWebRequest有AllowAutoRedirect属性)

对用户代理服务器的支持

WebClient不支持       
WebRequest支持(HttpWebRequest有UserAgent属性)
更新中.....
是的,你提到的 `WebRequest`, `HttpWebRequest`, `ServicePoint` 和 `WebClient` 是过时的类。在最新的 .NET 版本中,推荐使用更现代的 `HttpClient` 类来执行网络请求。 `HttpClient` 类提供了更灵活和可扩展的功能,适用于进行各种类型的 HTTP 请求。它支持异步操作、自定义请求头、超时设置等。 下面是一个示例,展示如何使用 `HttpClient` 类来下载文件: ```csharp using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main() { using (HttpClient httpClient = new HttpClient()) { string url = "http://example.com/file.txt"; string filePath = "C:\\path\\to\\save\\file.txt"; HttpResponseMessage response = await httpClient.GetAsync(url); response.EnsureSuccessStatusCode(); using (var fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create)) { await response.Content.CopyToAsync(fileStream); } Console.WriteLine("File downloaded successfully!"); } } } ``` 在上面的示例中,我们创建了一个 `HttpClient` 实例,并使用 `GetAsync` 方法发送 GET 请求来获取文件内容。然后,我们使用 `EnsureSuccessStatusCode` 方法确保请求成功。最后,我们将文件内容保存到本地文件中。 记住,在使用 `HttpClient` 进行网络请求时,始终使用 `using` 语句来确保及时释放资源。 使用 `HttpClient` 可以更好地适应现代的网络请求需求,并且是 .NET 推荐的方法。请确保将其与最新版本的 .NET 框架一起使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值