原文链接:https://blog.csdn.net/nutian/article/details/2913670 https://blog.csdn.net/m0_58015531/article/details/131322801
WebClient类
如果只想从特定的URI请求文件,则可以使用的最简单.NET基类就是System.Net.WebClient。这个类是非常高层的类,它主要用于执行带有一个或两个命令的操作。.NET Framework目前支持以http:、https:和file:标识符开头的URI。
注意:
术语URL(统一资源定位符)在新的技术规范中已不再使用,现在使用的是URI(统一资源标识符)。URI的含义大致与URL相同,但URI更通用,因为它不隐含正在使用的协议,如HTTP或FTP。
它支持同步和异步操作,并且可以使用多个线程同时下载或上传数据。
WebClient的优点包括:
简单易用,适合快速开发。
支持异步操作,可以提高程序的响应速度。
支持多线程操作,可以提高下载或上传数据的速度。
WebClient的缺点包括:
不支持自定义HTTP请求头。
不支持HTTP响应的详细信息,如状态码和响应头。
不支持流式传输,只能一次性下载或上传整个文件。
31.1.1 下载文件
使用WebClient类从Web站点下载文件时有两种方法,具体使用哪一种方法取决于文件内容的处理方式。如果只想把文件保存到磁盘上,就应该调用DownloadFile()方法。这个方法有两个参数:即文件的URI和保存所请求的数据的位置(路径和文件名):
WebClient Client = new WebClient();
Client.DownloadFile("http://www.Wrox.com/index.asp", "index.htm");
更为常见的是,应用程序需要处理从Web站点检索到的数据。为此,要使用OpenRead()方法,这个方法返回一个Stream引用。然后,就可以把数据从数据流中提取到内存中:
WebClient Client = new WebClient();
Stream strm = Client.OpenRead("http://www.Wrox.com/default.asp");
31.1.2 基本的Web客户示例
第一个示例将阐述怎样使用WebClient.OpenRead()方法。在这个示例中,我们将把下载的页面显示在ListBox控件中。把项目创建为标准的Windows C#应用程序,添加一个名为listBox1的列表框,将其docking 属性设置为DockStyle.Fill。在文件的开头,需要在using指令中添加System.Net和System.IO命名空间,然后对主窗体的构造函数进行以下改动:
public Form1()
{
InitializeComponent();
System.Net.WebClient Client = new WebClient();
Stream strm = Client.OpenRead("http://www.wrox.com");
StreamReader sr = new StreamReader(strm);
string line;
while ( (line=sr.ReadLine()) != null )
{
listBox1.Items.Add(line);
}
strm.Close();
}
在这个示例中,把System.IO命名空间的StreamReader类与网络数据流关联起来。这样,就可以使用更加有效的高层方法,例如ReadLine()方法,从数据流中以文本的形式获取数据。第30章讨论了把数据移动抽象化为数据流概念的优点,这个示例就充分体现出了这些优点。
这个示例的运行结果如图31-1所示。
图 31-1
在WebClient类中还有一个方法OpenWrite(),它可以返回一个可写的数据流,并把数据发送给URI。也可以指定该方法用于把数据发送给主机;默认的方法是POST。下面的代码段假定在本地机器上有一个可写的目录accept,这段代码在该目录下创建文件newfile.txt,其内容为"Hello World":
WebClient webClient = new WebClient();
Stream stream = webClient.OpenWrite("http://localhost/accept/newfile.txt","PUT");
StreamWriter streamWriter = new StreamWriter(stream);
streamWriter.WriteLine("Hello World");
streamWriter.Close();
31.1.3 上传文件
WebClient类还提供了UploadFile()方法和UploadData()方法。UploadFile()方法用于把指定的文件上传到指定的位置,其中的文件名已经给出;而UploadData()方法用于把二进制数据上传至指定的URI,那些二进制数据是作为字节数组提供的(还有一个DownloadData()方法,用于从URI中检索字节数组):
WebClient client = new WebClient();
client.UploadFile("http://www.ourwebsite.com/NewFile.htm", "C://WebSiteFiles//NewFile.htm");
byte [] image;
// code to initialise image so it contains all the binary data for
// some jpg file
client.UploadData("http://www.ourwebsite.com/NewFile.jpg", image);
标签:教程,http,示例,URI,详细,new,方法,WebClient From: https://www.cnblogs.com/Dongmy/p/16895789.html