C# WebClient类用法实例

进来的项目中要实现能够在windows service中调用指定项目的链接页面。由于访问页面时候使用的是ie浏览器或其他浏览器,所以想起用webclient类。

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

WebClient下载文件

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

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

示例:OpenRead(string uri);

OpenRead(string uri)
 #region 读取指定uri的html
    /// <summary>
    /// 读取指定uri的html
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button4_Click(object sender, EventArgs e)
    {
      WebClient wc = new WebClient();
      string uri = "http://127.0.0.1/rss/sina.aspx";
      Stream stream = wc.OpenRead(uri);
      StreamReader sr = new StreamReader(stream);
      string strLine = "";
      while ((strLine = sr.ReadLine()) != null)
      {
        this.listBox1.Items.Add(strLine);
      }
      sr.Close();
    }
    #endregion

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

OpenWriter(string uri,string method)
#region 打开一个流使用指定的方法将数据写入到uri
    /// <summary>
    /// 打开一个流使用指定的方法将数据写入到uri
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
      WebClient wc = new WebClient();
      string uri = "http://192.168.0.35/cims30/rss.txt";
      Stream stream = wc.OpenWrite(uri, "PUT");
      StreamWriter sw = new StreamWriter(stream);
      sw.WriteLine("HelloWorldHelloWorldHelloWorldHelloWorld");
      sw.Flush();
      sw.Close();
      MessageBox.Show("OK");
    }
    #endregion

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

上传文件

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

示例:上传文件

#region 把本地文件上传到指定uri
    /// <summary>
    /// 把本地文件上传到指定uri
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2_Click(object sender, EventArgs e)
    {
      WebClient wc = new WebClient();
      string targetPath = "http://127.0.0.1/rss/Data Configuration.zip";
      string sourcePath = "d:\\Data Configuration.zip";
      this.label1.Text = string.Format("uploading {0} to {1}", targetPath, sourcePath);
      byte[] bt = wc.UploadFile(targetPath, "PUT", sourcePath);
      MessageBox.Show("OK");
    }
    #endregion

    #region 把数据缓冲区上载到指定资源
    /// <summary>
    /// 把数据缓冲区上载到指定资源
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button3_Click(object sender, EventArgs e)
    {
      WebClient wc = new WebClient();
      string targetPath = "http://127.0.0.1/rss/kaifeng.jpg";
      string sourcePath = @"C:\test.jpg";
      FileStream fs = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
      byte[] bt = new byte[fs.Length];
      fs.Read(bt, 0, bt.Length);
      wc.UploadData(targetPath, "PUT", bt);
    }
    #endregion

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

(0)

相关推荐

  • .NET C#使用微信公众号登录网站

    适用于:本文适用于有一定微信开发基础的用户 引言: 花了300大洋申请了微信公众平台后,发现不能使用微信公众号登录网站(非微信打开)获得微信帐号.仔细研究后才发现还要再花300大洋申请微信开放平台才能接入网站的登录.于是做为屌丝程序员的我想到了自己做一个登录接口. 工具和环境: 1. VS2013 .net4.0 C# MVC4.0 Razor 2.插件 A. Microsoft.AspNet.SignalR;时时获取后台数据 B.Gma.QrCodeNet.Encoding;文本生成二维码 实

  • C#中在WebClient中使用post发送数据实现方法

    很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法.本文就较为详细的说明了WebClient中使用post发送数据实现方法. 下面先说说WebClient 最主要的功能. WebClient 构造函数 .Ctor 包括 一个空构造函数 和一个静态构造函数, 静态构造函数主要为UrlEncode 和UrlEncodeAndWirte 编码提供参照by

  • C#有效防止同一账号多次登录(附三种方法)

    本文先为大家介绍如何利用缓存Cache方便地实现此功能. Cache与Session这二个状态对像的其中有一个不同之处,Cache是一个全局对象,作用的范围是整个应用程序,所有用户: 而Session是一个用户会话对象,是局部对象,用于保存单个用户的信息. 只要把每次用户登录后的用户信息存储在Cache中,把Cache的Key名设为用户的登录名,Cache的过期时间设置为Session的超时时间,在用户每次登录的时候去判断一下Cache[用户名]是否有值,如果没有值,证明该用户没有登录,否则该用

  • C#实现简单的登录界面

    首先我们来看一个简单的制作过程 打开visual 2010,新建窗体,既然是登录窗口,那么就不让它出现最大化.最小化以及拖拉大小功能(上一节已经提到过怎么设置大小),如图所示,甚至窗体的Text属性值为"登录窗口",大小随意. 创建窗体之后就开始界面详细的组件布局了,主要是在左边拖拉控件,然后放到窗体中去,定义属性值.这些都比较简单. 到了代码响应阶段,双击登录按钮,进入代码视图: private void button1_Click(object sender, EventArgs

  • C#中WebClient实现文件下载

    鉴于各种复杂的网络环境,笔者决定采用不同的编程接口进行下载尝试,以增加程序的可用性. 这里仅介绍使用 WebClient 的方法,后续的文章会介绍其他的方法.博文中主要介绍思路和关键代码,完整的 demo 附在文末. 使用代理访问网络 很多公司的员工都是通过公司设置的代理上网的.通过代理上网主要是方便公司进行各种的管制,当然也能实现一些特殊的功能- 不过这会给我们的程序访问网络带来一些问题. 其实,WebClient 中的 API 已经很智能了,比如我们创建的 HttpWebRequest 对象

  • C#实现的三种模拟自动登录和提交POST信息的方法

    本文实例讲述了C#实现的三种模拟自动登录和提交POST信息的方法.分享给大家供大家参考,具体如下: 网页自动登录(提交Post内容)的用途很多,如验证身份.程序升级.网络投票等,以下是用C#实现的方法. 网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser.WebClient.HttpWebRequest这三个.以下就分别用这三种方法来实现: 1.WebBrowser是个"迷你"浏览器,其特点

  • C#.NET实现网页自动登录的方法

    本文实例讲述了C#.NET实现网页自动登录的方法.分享给大家供大家参考.具体如下: 用C#语言编写一个Windows Form应用程序,实现自动登录一个特定的页面. 下面以自动登录:http://localhost/Web/Login.aspx 作为例子,讲解如何模拟手工输入用户名密码并点击登录,实现自动登录. 新建一个C#应用程序,给应用程序起个名字,如AutoLogin,在窗体中添加一个TextBox.Button,及WebBrowser控件,并为WebBrowser控件添加webBrows

  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法

    本文实例讲述了C#使用WebClient登录网站并抓取登录后的网页信息实现方法.分享给大家供大家参考,具体如下: C#登录网站实际上就是模拟浏览器提交表单,然后记录浏览器响应返回的会话Cookie值,再次发送请求时带着这个会话cookie值去请求就可以实现模拟登录的效果了. 如下类CookieAwareWebClient实现在发送请求时都带着cookie. public class CookieAwareWebClient : WebClient { private CookieContaine

  • C# webclient中文乱码问题解决方法

    webclient在调用DownloadData或者DownloadString的时候请求回来的数据出现乱码问题,解决办法如下: 1.设置webclient的编码格式为目标编码格式 复制代码 代码如下: WebClient web = new WebClient();//创建webclient对象 web.Encoding = System.Text.Encoding.UTF8;//定义对象语言 string returns = web.DownloadString("_http://www.w

  • C#利用WebClient实现两种方式下载文件

    最近整理了WebClient 两种方式下载文件 ,留作以后查询. 第一种 string URLAddress = @"http://xiazai.jb51.net"; string receivePath=@"C:\"; client.DownloadFile(URLAddress, receivePath + System.IO.Path.GetFileName(URLAddress)); 就OK了. 第二种 Stream str = client.OpenRea

随机推荐