使用WebClient实现通讯(Silverlight学习笔记)
2011-03-12 17:07
459 查看
使用WebClient实现通讯
我们曾经学习过如何在Silverlight中用HttpWebRequest通讯。这里我们学习如何使用WebClient实现通讯。一、什么是WebClient类
1、基本知识
WebClient类是Mircsoft在.NET框架下提供的向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法。通过这个类,大家可以在脱离浏览器的基础上模拟浏览器对互联网上的资源的访问和发送信息。它使人们使用起来更加简单方便,然而它也有先天不足的地方。那就是缺少对cookies/session的支持。
WebClient类为Silverlight插件提供了一整套的HTTP客户端功能,可以下载应用程序数据,比如XAML内容,附加的程序集或者视频图片等媒体文件。WebClient可以根据程序须要即时下载内容,可以异步呈现和使用下载的内容,而不是随HTML页面一起下载。
WebClient类提供了发起请求、监视请求的进度以及检索下载内容、上传数据到指定资源等功能。在Silverlight 2中,只能使用WebClient发起异步的请求,如开发一个视频播放应用程序,在应用程序加载时,选择开始请求每一部影片,使其加载到浏览器缓存中,这样可以避免缓冲延迟。
由于WebClient请求都是异步的,使用的是基于异步事件编程模型,大部分交互操作都是依靠事件处理来完成的,通常须要定义如下一个或者多个事件处理函数。
2、相关方法
将数据上载到资源的 WebClient 方法
OpenWriteAsync: 检索 Stream,它在不阻止调用线程的情况下以异步方式将数据发送到资源。
UploadStringAsync: 在不阻止调用线程的情况下,将 String 发送到资源。
从资源下载数据的 WebClient 方法
DownloadStringAsync: 在不阻止调用线程的情况下,从资源下载 String。
OpenReadAsync : 在不阻止调用线程的情况下,以异步方式从资源返回数据。
您可以使用 CancelAsync 方法取消尚未完成的异步操作。
3、两种工作方式:
A、以字符串形式下载和上传数据 使用WebClient可以以字符串形式下载数据,当请求一个指定地址的字符串时,调用DownloadStringAsync方法,操作完成后将触发DownloadStringCompleted事件,在该事件处理方法中能够接收到一个类型为DownloadStringCompletedEventArgs的参数,它的Result属性的类型为String,我们可以通过该属性来获得最终的字符串结果,它可以是一段普通的文本或一段XML文本等。
B、 以流形式下载和上传数据
使用WebClient同样可以以流形式下载数据,当请求下载的资源是一个流时,可调用OpenReadAsync方法,此操作完成后将触发OpenReadCompleted事件,在该事件处理方法中能够接收到一个类型为OpenReadCompletedEventArgs的参数,它的Result属性类型为Stream,使用此属性能够获取到最终的流结果。
二、示例如何实现通讯 (以字符串形式下载和上传数据)
新建Silverlight应用程序SLWebClient。如下图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
using System.Text;
using System.Runtime.Serialization.Json;
namespace SLWebClient
在服务器端,我们要建立两个Handler
WebClientDownHandler.ashx :处理客户端的下载请求.
WebClientUpLoadHandler.ashx :处理客户端的上传请求 WebClientDownHandler.ashx --负责处理下载字符串请求的Handler代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.IO;
namespace SLWebClient.Web
WebClientUpLoadHandler.ashx--负责处理上传字符串请求的Handler代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.IO;
namespace SLWebClient.Web
生成应用程序并运行,运行效果如下:
相关文章推荐
- SilverLight学习笔记--使用WebClient实现通讯(二)(上传和下载流数据)
- SilverLight学习笔记--使用WebClient实现通讯(一)(上传和下载字符串数据)
- SilverLight学习笔记--使用WebClient实现通讯(一)(上传和下载字符串数据)
- Silverlight学习笔记(六)-----使用DispatcherTimer实现简单计时器--Silverlight学习笔记
- Silverlight学习笔记一(理解一下机制,使用一下布局,实现一个简单的用户登录)
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- 学习笔记 --- LINNUX 使用异步通讯机制实现按键驱动代码分析
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- ROS学习笔记 (四):使用ROS实现ARM与PC之间的通讯
- SilverLight商业应用程序开发---学习笔记(9)从摘要信息跳转到详细信息 导航到细节视图 在弹出窗体打开细节视图 使用DataGrid控件的行细节显示特性显示细节内容 主/从视图的实现
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- Silverlight学习笔记2:Silverlight中使用多线程实现倒计时
- Silverlight 学习笔记——MVVM模式实现主从数据显示
- STM32F10x 学习笔记8(USART实现串口通讯 DMA 方式)
- WebGL学习笔记-使用3D引擎threeJS实现星空粒子移动
- iOS学习笔记4-GCDAsyncUdpSocket的使用(实现异步发送接收数据)
- android学习之使用AIDL实现进程间的通讯