zoukankan      html  css  js  c++  java
  • WebClient类的使用

    使用System.Net.WebClient类可以从特定的URI请求文件。System.Net.WebClient是一个非常高级的类,它用简单的命令就能实现一些基本操作。下面通过几个实验,说明怎样使用这个类从下载和上传数据。

    1、下载文件

    使用WebClient类下载文件有两种方法,具体使用哪一种方法取决于文件内容的处理方式。如果需要把文件存储到文件系统上,需要使用DownloadFile()方法,这个方法有两个参数:文件的URI和保存文件的路径:

    1:  WebClient client = new WebClient();
    2:  client.DownloadFile("http://localhost:90/","d:\\123.txt");
     

    如果应用程序需要处理从Web获取的数据,可以使用OpenRead方法。这个方法返回一个Stream引用。使用时可以将这些数据从数据流中提取到内存中直接使用:

    1:  WebClient client = new WebClient();
    2:  Stream strm = client.OpenRead(http://localhost:90/);
     

    WebClient类还有一个OpenWrite()方法,它可以返回一个可写的数据流。别于用户把数据发给URI。这个方法也可以指定把数据发送给主机的方法:Post、Get、PUT等。下边这段代码演示了在网站根目录下创建文件file.txt,并将字符串“Hello World”写入该文件:

    1:  WebClient client = new WebClient();
    2:  Stream stream = client.OpenWrite("http://localhost:90/", "PUT");
    3:  StreamWriter sw = new StreamWriter(stream);
    4:  sw.WriteLine("Hello World!");
    5:  sw.Close();

    2、上传文件

    WebClient类提供了UploadFile()和UploadData()方法。在需要投递HTML窗体或上传整个文件时,就可以使用这两个方法。UploadFile()方法把文件上传到指定的位置。UploadData()方法把作为字节数组提供的二进制数据上传至指定的URI,如下所示:

    1:  WebClient client = new WebClient();
    2:  client.UploadFile("http://localhost:90/", "d:\\123.txt");
    3:  
    4:  FileStream fs = new FileStream("d:\\123..jpg",FileMode.Open);
    5:  byte[] image = new byte[fs.Length];
    6:  fs.Read(image,0,(int)fs.Length);
    7:  client.UploadData("http://localhost:90/image.jpg", image);

    3、使用限制

    使用WebClient类有一些功能限制:这个类不能提供身份验证证书,这样在上传数据是就会出现一些问题。大多数站点是不会接收没有身份验证的上传文件的。

    尽管可以给请求添加标题信息并检查相应中的标题信息,但这仅仅限制与一般意义上的检查。

    这是由于WebClient类是非常一般的类,可以使用任意协议发送和接收响应。他不能处理特定于任何协议的任何特性,例如Cookie等。如果需要使用这些特性,需要使用.net中的WebResponse和WebRequest类。

    为基础的一系列类。

    Technorati 标签: WebClient
  • 相关阅读:
    pthread_rwlock_rdlock和“No such file or directory”
    Thrift线程和状态机分析
    Haodoop RPC解析
    Thrift结构分析及增加取客户端IP功能实现
    StarUML 5.0问题解决:Failed to open the model file. Invalid file format.
    检测Linux系统是否支持某系统调用
    eclipse的thrift插件
    常见gcc编译问题解决方法集
    Thrift编译错误('::malloc' has not been declared)
    安装Android SDK Manager的“Failed to fetch refused”问题解决方法
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1996549.html
Copyright © 2011-2022 走看看