C#网络编程System.Net.WebClient 类vs System.Net.Http.HttpClient 类

目录

一、WebClient 类

1.WebClient 将数据上传到资源的方法

2.WebClient 从资源下载数据的方法

3.示例源码

4.生成效果

二、HttpClient 类

1.示例源码

2.生成效果


        为什么要把两者拿出来pk呢?那是因为WebClient已经在.NET 6.0以后得版本被弃用了,一旦在.NET 6.0以上的框架下使用时,会产生SYSLIB0014 警告。虽然可以根据提示采取措施禁止警告,但已经是不正常的状态了。

        SYSLIB0014 警告 - .NET | Microsoft Learn  https://learn.microsoft.com/zh-cn/dotnet/fundamentals/syslib-diagnostics/syslib0014

        从 .NET 6 开始,将以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0014。并提示解决方法:请改用 HttpClient。

        WebRequest()
        System.Net.WebRequest.Create
        System.Net.WebRequest.CreateHttp
        System.Net.WebRequest.CreateDefault(Uri)
        HttpWebRequest(SerializationInfo, StreamingContext)
        System.Net.ServicePointManager.FindServicePoint
        WebClient()

一、WebClient 类

         命名空间:System.Net。提供用于将数据发送到由 URI 标识的资源及从这样的资源接收数据的常用方法。

        类 WebClient 提供用于将数据发送到或从 URI 标识的任何本地、Intranet 或 Internet 资源接收数据的常用方法。

        类 WebClient 使用 WebRequest 类提供对资源的访问权限。 WebClient实例可以访问使用 方法注册WebRequest.RegisterPrefix的任何WebRequest后代的数据。

1.WebClient 将数据上传到资源的方法

方法说明
OpenWriteStream检索用于将数据发送到资源的 。
OpenWriteAsyncStream检索用于将数据发送到资源的 ,而不会阻止调用线程。
UploadData将字节数组发送到资源,并返回包含任何响应的 Byte 数组。
UploadDataAsync在不 Byte 阻止调用线程的情况下,将数组发送到资源。
UploadFile将本地文件发送到资源并返回包含任何响应的 Byte 数组。
UploadFileAsync在不阻止调用线程的情况下,将本地文件发送到资源。
UploadValues将 发送到 NameValueCollection 资源并返回包含任何响应的 Byte 数组。
UploadValuesAsync将 发送到 NameValueCollection 资源并返回包含 Byte 任何响应的数组,而不会阻止调用线程。
UploadString将 发送到 String 资源,并返回包含 String 任何响应的 。
UploadStringAsync将 发送到 String 资源,而不会阻止调用线程。

2.WebClient 从资源下载数据的方法

方法说明
OpenRead以 的形式 Stream返回资源中的数据。
OpenReadAsync从资源返回数据,而不会阻止调用线程。
DownloadData从资源下载数据并返回 Byte 数组。
DownloadDataAsync从资源下载数据并返回 Byte 数组,而不会阻止调用线程。
DownloadFile将数据从资源下载到本地文件。
DownloadFileAsync将数据从资源下载到本地文件,而不会阻止调用线程。
DownloadStringString从资源下载 并返回 String。
DownloadStringAsync从资源下载 , String 而不会阻止调用线程。

3.示例源码

// WebClient
// .NET 4.8控制台应用
// The following code example creates a WebClient instance 
// and then uses it to download data from a server and display it on the system console, 
// to download data from a server and write it to a file, 
// and to upload form values to a server and receive the response. 
using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;namespace ConsoleApp2
{internal class Program{static void Main(string[] args){try{// Download the data to a buffer.WebClient client = new WebClient();byte[] pageData = client.DownloadData("http://www.contoso.com");string pageHtml = Encoding.ASCII.GetString(pageData);Console.WriteLine(pageHtml);// Download the data to a file.client.DownloadFile("http://www.contoso.com", "page.htm");// Upload some form post values.NameValueCollection form = new NameValueCollection{{ "MyName", "MyValue" }};byte[] responseData = client.UploadValues("http://www.contoso.com/form.aspx", form);}catch (WebException webEx){Console.WriteLine(webEx.ToString());if (webEx.Status == WebExceptionStatus.ConnectFailure){Console.WriteLine("Are you behind a firewall?  If so, go through the proxy server.");}}}}
}

4.生成效果

<html><head><title>Microsoft Corporation</title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"></meta><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta><meta name="SearchTitle" content="Microsoft.com" scheme=""></meta><meta name="Description" content="Get product information, support, and news from Microsoft." scheme=""></meta><meta name="Title" content="Microsoft.com Home Page" scheme=""></meta><meta name="Keywords" content="Microsoft, product, support, help, training, Office, Windows, software, download, trial, preview, demo,  business, security, update, free, computer, PC, server, search, download, install, news" scheme=""></meta><meta name="SearchDescription" content="Microsoft.com Homepage" scheme=""></meta></head><body><p>Your current User-Agent string appears to be from an automated process, if this is incorrect, please click this link:<a href="http://www.microsoft.com/en/us/default.aspx?redir=true">United States English Microsoft Homepage</a></p></body>
</html>

二、HttpClient 类

        命名空间:System.Net.Http。一个用于从 URI 标识的资源发送 HTTP 请求和接收 HTTP 响应的类。

1.示例源码

// HttpClient
// HttpClient is intended to be instantiated once per application, rather than per-use. See Remarks.
// Call asynchronous network methods in a try/catch block to handle exceptions.
namespace test1 
{  class Program{static readonly HttpClient client = new();static async Task Main(){           try{using HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");response.EnsureSuccessStatusCode();string responseBody = await response.Content.ReadAsStringAsync();// Above three lines can be replaced with new helper method below// string responseBody = await client.GetStringAsync(uri);Console.WriteLine(responseBody);}catch (HttpRequestException e){Console.WriteLine("\nException Caught!");Console.WriteLine("Message :{0} ", e.Message);}}}  
}

2.生成效果

// 运行结果 
<html><head><title>Microsoft Corporation</title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"></meta><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta><meta name="SearchTitle" content="Microsoft.com" scheme=""></meta><meta name="Description" content="Get product information, support, and news from Microsoft." scheme=""></meta><meta name="Title" content="Microsoft.com Home Page" scheme=""></meta><meta name="Keywords" content="Microsoft, product, support, help, training, Office, Windows, software, download, trial, preview, demo,  business, security, update, free, computer, PC, server, search, download, install, news" scheme=""></meta><meta name="SearchDescription" content="Microsoft.com Homepage" scheme=""></meta></head><body><p>Your current User-Agent string appears to be from an automated process, if this is incorrect, please click this link:<ahref="http://www.microsoft.com/en/us/default.aspx?redir=true">United States English Microsoft Homepage</a></p></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python跑ncnn(验证模型是否转换成功)

为了转ncnn模型是否成功&#xff0c;用python验证一下先 pip install ncnn分割模型的验证代码 import ncnn import cv2 import numpy as np# 创建ncnn的网络对象 net ncnn.Net()# 加载ONNX模型 net.load_param(E:\\Android_Projects\\ncnn-android-deeplabv3plus-main\\app\…

Spring学习笔记:Day1

学习策略&#xff1a; 理论与实践相结合&#xff1a;每学完一个知识点&#xff0c;尝试进行小的练习或小的项目实践。 持续反馈&#xff1a;在学习过程中&#xff0c;参与社区、论坛或与同事进行讨论&#xff0c;及时解决遇到的问题。 实际项目驱动&#xff1a;在学习后期&a…

PHP字符串面试题

PHP字符串面试题 1. 创建一个字符串变量&#xff0c;并打印输出字符串的内容。 <?php $string "Hello, World!"; echo $string; ?>2. 如何获取字符串的长度&#xff1f; <?php $string "Hello, World!"; $length strlen($string); echo …

P1530 [USACO2.4] 分数化小数 Fractions to Decimals

题目描述 写一个程序,输入一个形如 DN​ 的分数,输出它的小数形式。如果小数有循环节的话,把循环节放在一对圆括号中。 例如,13=0.33333333…31​=0.33333333… 写成 0.(3)0.(3),41333=0.123123123…33341​=0.123123123… 写成 0.(123)0.(123),整数 x 写成 x.0。 输入…

Vue3父子组件通信

一、父组件给子组件传值 子组件 ShipHomePortDialog 1.定义变量名称 <script lang"ts" setup> const props defineProps([title]) </script> 2.在template中使用变量 <h4>{{ title }}</h4> 3.在Script代码使用 var t props.title…

鸿蒙开发笔记

最近比较火&#xff0c;本身也是做前端的&#xff0c;就抽空学习了下。对前端很友好 原视频地址&#xff1a;黑马b站鸿蒙OS视频 下载安装跟着视频或者文档就可以了。如果你电脑上安装的有node&#xff0c;但是开发工具显示你没安装&#xff0c;不用动咱们的node&#xff0c;直…

15个Pandas代码片段助力数据分析

大家好&#xff0c;Python的Pandas库是数据分析的基本工具&#xff0c;提供了强大的数据操作和分析功能。本文将探讨15个高级Pandas代码片段&#xff0c;这些代码片段将帮助简化数据分析任务&#xff0c;并从数据集中提取有价值的见解。 1. 过滤数据 import pandas as pd# 创…

红队攻防实战之Access注入

若盛世将倾&#xff0c;深渊在侧&#xff0c;我辈当万死以赴 访问漏洞url: 1.Access联合查询 判断是否有注入 and 11正常&#xff0c;and 12出错 判断字段数 order by 7正常 order by 8出错 爆破出表名并判断回显点为2&#xff0c;5 查看字段内容&#xff0c;将字段名填入回…

12月1号作业

实现运算符重载 #include <iostream>using namespace std; class Person{friend const Person operator-(const Person &L,const Person &R);friend bool operator<(const Person &L,const Person &R);friend Person operator-(Person &L,const …

WakaTime一个用于跟踪和分析编程时间的工具

WakaTime是一个用于跟踪和分析编程时间的工具&#xff0c;它可以集成到各种代码编辑器和集成开发环境中&#xff0c;例如Visual Studio Code、Sublime Text、PyCharm等。它可以帮助开发人员了解他们花费在不同项目和编程语言上的时间&#xff0c;以及他们的编码习惯和生产力。 …

C语言实战演练之贪吃蛇游戏

贪吃蛇游戏的C语言实现主要包括以下几个步骤&#xff1a; 1. 初始化游戏界面&#xff1a; 设置窗口大小&#xff0c;背景颜色等。 2. 创建蛇的数据结构&#xff1a; 包括蛇头的位置、蛇身的长度、蛇身的坐标等。 3. 创建食物的数据结构&#xff1a; 包括食物的位置等。 4. 控制…

【面试HOT200】二叉树——广度优先搜索篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…

Leetcode 2952. Minimum Number of Coins to be Added

Leetcode 2952. Minimum Number of Coins to be Added 1. 解题思路2. 代码实现 题目链接&#xff1a;2952. Minimum Number of Coins to be Added 1. 解题思路 这一题思路上就是一个贪婪算法的思路&#xff0c;偏数学性多一点。 首先&#xff0c;我们将面值有序排列&#x…

SpringSecurity工作原理

实现功能就是继承这几个对应功能的类。 大概工作流程 Spring Security 的过滤器&#xff08;Filters&#xff09;和拦截器&#xff08;Interceptors&#xff09;是 Spring Security 框架中用于保护 web 应用安全的重要组件。它们在处理 HTTP 请求时扮演不同的角色&#xff0c…

Go 模块系统最小版本选择法 MVS 详解

目录 Golang 模块系统简介 包版本管理 最小版本选择&#xff08;MVS&#xff09;原理 MVS 的优点 MVS的缺点 实际使用MVS 小结 参考资料 Golang 模块系统简介 Golang 模块系统是 Go 1.11 版本引入的一个新特性&#xff0c;主要目的是解决 Go 项目中的依赖管理问题。在模…

Python IDLE: 一个简单易用的Python集成开发环境

简介 Python是一种高级编程语言&#xff0c;被广泛用于科学计算、数据分析、Web开发等领域。要编写和运行Python代码&#xff0c;您需要一个集成开发环境&#xff08;Integrated Development Environment&#xff0c;简称IDE&#xff09;。Python IDLE&#xff08;Integrated …

数学杂谈:残次品的无砝码天平定位问题

数学杂谈&#xff1a;残次品的无砝码天平定位问题 1. 问题描述2. 问题解答3. 问题拓展 1. 引理12. 引理23. 引理34. 推论15. 推论2 1. 问题描述 给出问题如下&#xff1a; 12个乒乓球&#xff0c;有一个次品&#xff0c;不知轻重&#xff0c;用一台无砝码天平称三次&#xf…

uni-app一些目录结构、方法、生命周期、打包、微信小程序登录与支付

1、关于uniapp的目录结构 跟普通vue项目目录结构差不多&#xff0c;多了几个核心文件&#xff0c;manifest.json是配置应用名称、appid、logo、版本等打包信息用的&#xff0c;pages.json的作用是配置页面路径、页面窗口样式、tabBar、navigationBar等页面类信息 2、页面适配方…

c# 浮点余数

double x; double y; double zx%y;对于以上代码 z&#xff08;如果不为零&#xff09;的符号与 x 的符号相同。 z 的绝对值是 |x| - n * |y| 得出的值&#xff0c;其中 n 是小于或等于 |x| / |y| 的最大可能整数&#xff0c;|x| 和 |y| 分别是 x 和 y 的绝对值。 代码示例&am…