WebClient用法小结(转载)

如果只想从特定的URI请求文件,则使用WebClient,它是最简单的.NET类,它只用一两条命令执行基本操作,.NET FRAMEWORK目前支持以http:、https:、ftp:、和 file: 方案标识符开头的 URI。

WebClient下载文件

使用webclient下载文件有两种方法,具体使用哪一种方法取决于文件内容的处理方式,如果只想把文件保存到磁盘上,使用downloadfile()方法,此方法有两个参数,即请求的uri和请求文件的的数据保存位置。

更常见的是,应用程序需要处理从web站点检索的数据,为此要用到OpenRead方法,此方法返回一个Stream对象,然后,可以Stream对象从数据流提取到内存中。

示例:OpenRead(string uri);

 1         #region 读取指定uri的html
 2         /// <summary>
 3         /// 读取指定uri的html
 4         /// </summary>
 5         /// <param name="sender"></param>
 6         /// <param name="e"></param>
 7         private void button4_Click(object sender, EventArgs e)
 8         {
 9             WebClient wc = new WebClient();
10             string uri = "http://127.0.0.1/rss/sina.aspx";
11             Stream stream = wc.OpenRead(uri);
12             StreamReader sr = new StreamReader(stream);
13             string strLine = "";
14             while ((strLine = sr.ReadLine()) != null)
15             {
16                 this.listBox1.Items.Add(strLine);
17             }
18             sr.Close();
19         }
20         #endregion

示例:OpenWriter(string uri,string method);

 1 #region 打开一个流使用指定的方法将数据写入到uri
 2         /// <summary>
 3         /// 打开一个流使用指定的方法将数据写入到uri
 4         /// </summary>
 5         /// <param name="sender"></param>
 6         /// <param name="e"></param>
 7         private void button1_Click(object sender, EventArgs e)
 8         {
 9             WebClient wc = new WebClient();
10             string uri = "http://192.168.0.35/cims30/rss.txt";
11             Stream stream = wc.OpenWrite(uri, "PUT");
12             StreamWriter sw = new StreamWriter(stream);
13             sw.WriteLine("HelloWorldHelloWorldHelloWorldHelloWorld");
14             sw.Flush();
15             sw.Close();
16             MessageBox.Show("OK");
17         }
18         #endregion

openwriter方法返回一个可写的数据流,便于用户把数据发送给uri,可以指定用户把数据发送给主机的方法,默认是post,上例假定0.35的服务器上有一个可写的目录刺马s,这段代码是在该目录下创建rss.txt文件,其内容为“HelloWorldHelloWorldHelloWorldHelloWorld”

WebClient上传文件

WebClient类提供了UploadFile()UploadData()方法,在需要投递HTML窗体或上传整个文件时候,就可以使用这两个方法。Uploadfile()方法把文件上传到指定的位置,其中文件名字已经给出,uploaddata()方法把字节数组提供的二进制数据上传到指定的uri;

示例:

1   #region 把本地文件上传到指定uri
 2         /// <summary>
 3         /// 把本地文件上传到指定uri
 4         /// </summary>
 5         /// <param name="sender"></param>
 6         /// <param name="e"></param>
 7         private void button2_Click(object sender, EventArgs e)
 8         {
 9             WebClient wc = new WebClient();
10             string targetPath = "http://127.0.0.1/rss/Data Configuration.zip";
11             string sourcePath = "d:\\Data Configuration.zip";
12             this.label1.Text = string.Format("uploading {0} to {1}", targetPath, sourcePath);
13             byte[] bt = wc.UploadFile(targetPath, "PUT", sourcePath);
14             MessageBox.Show("OK");
15         }
16         #endregion
17
18
19         #region 把数据缓冲区上载到指定资源
20         /// <summary>
21         /// 把数据缓冲区上载到指定资源
22         /// </summary>
23         /// <param name="sender"></param>
24         /// <param name="e"></param>
25         private void button3_Click(object sender, EventArgs e)
26         {
27             WebClient wc = new WebClient();
28             string targetPath = "http://127.0.0.1/rss/kaifeng.jpg";
29             string sourcePath = @"C:\test.jpg";
30             FileStream fs = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
31             byte[] bt = new byte[fs.Length];
32             fs.Read(bt, 0, bt.Length);
33             wc.UploadData(targetPath, "PUT", bt);
34         }
35         #endregion

webclient功能有限,特别是不能使用身份验证证书,这样,上传数据时候问题出现,现在许多站点都不会接受没有身份验证的上传文件。尽管可以给请求添加标题信息并检查相应中的标题信息,但这仅限于一般意义的检查,对于任何一个协议,webclient没有具体支持,。这是由于webclient是非常一般的类,可以使用任意协议发送请求和接受相应,它不能处理特定于任何协议的任何特性。

-------------------------------------------------------------------------------------------------------------

时间: 2024-09-29 05:39:50

WebClient用法小结(转载)的相关文章

Spring mvc中@RequestMapping 6个基本用法小结(转载)

小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码   @RequestMapping(value="/departments") public String simplePattern(){ System.out.println("simplePattern method was called"); return "someResult"; } 则访问http://local

WebClient 用法小结

进来的项目中要实现能够在windows service中调用指定项目的链接页面.由于访问页面时候使用的是ie浏览器或其他浏览器,所以想起用webclient类. 如果只想从特定的URI请求文件,则使用WebClient,它是最简单的.NET类,它只用一两条命令执行基本操作,.NET FRAMEWORK目前支持以http:.https和file:标识符开头的uri. WebClient下载文件 使用webclient下载文件有两种方法,具体使用哪一种方法取决于文件内容的处理方式,如果只想把文件保存

iOS开发系列之一 - UIButton 用法小结

// 初始化按钮并设置类型 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 能够定义的UIButton类型有以下6种: // typedef enum { // UIButtonTypeCustom = 0, 自定义风格 // UIButtonTypeRoundedRect, 圆角矩形 // UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用 // UIButto

iOS开发系列之二 - UILabel 用法小结

// 初始化标签 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; // 设置标签文字 label.text = @"This is a test text.This is a test text.This is a test text."; // 设置标签文字字体 // 使用系统字体 label.font = [UIFont systemFontOfSize:20]; //

Java返回类型泛型的用法小结

Java返回类型泛型的用法小结 版权声明:本文为博主原创文章,未经博主允许不得转载. 关于Java泛型的基本用法就不多说了,主要是一个编译期的检查,也避免了我们代码中的强制转换,比较经典的用法有泛型DAO,泛型Page的DTO. 现在我要说的是一个挺有趣但是貌似还不是太多的人在代码中使用的方法,前段时间用guava和op4j的时候发现这样的用法,看看了源码,也是很简单的. 比如guava中创建集合的方法 List<xx> list = Lists.newArrayList(),这个代替了我们传

iOS开发系列之三 - UITextField 用法小结

// 初始化输入框并设置位置和大小 UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, 300, 30)]; // 设置输入框提示 textField.placeholder = @"TextField Tip"; // 输入框中预先输入的文字 textField.text = @"预先输入的文字"; // 设置输入框文本的字体 textField.font

iOS开发系列之四 - UITextView 用法小结

// 初始化输入框并设置位置和大小 UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 300, 180)]; // 设置预设文本 textView.text = @""; // 设置文本字体 textView.font = [UIFont fontWithName:@"Arial" size:16.5f]; // 设置文本颜色 textView.textColor

C++ typedef用法小结 (※不能不看※)

C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量:以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,

C语言函数sscanf()的用法 (转载

在我的学习过程中,从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)