WebClient DownloadStringAsync/UploadStringAsync和OpenWriteAsync/OpenReadAsync的区别

WebClient使用WebRequest类别提供对资源的存取。WebClient类别相较于HttpWebRequest类别,它比较像是个被封装完成专门处理网路资源存取的类别,例如:依照预设值,当使用WebClient时,该执行个体是不会传送选择性的Http标头,也就是它会依旧你使用的URI产生相对应的Http Header内容,让接收端可以有效撷取需要的内容。这样的好处可以让开发人员依基本的Header来完成任务。但其实对于Header的使用,还是有其限制在的,可以参考

< WebHeaderCollection类别 >这篇文章的介绍,里面提供了那些Header可以操作来向接收端进行沟通。

Method

Description

OpenWriteAysnc

以非同步方式撷取用于将资料传送至资源的Stream,而不封锁呼叫的执行绪。使用POST命令上载HTTP资源。该方法将资料转入资料流中进行传送。

UploadStringAsync

String传送至资源,而不封锁呼叫的执行绪。指定上传的URI必须识别出可以接受使用POST方法传送之要求的资源。

DownloadStringAsync

从资源下载String,而不封锁呼叫的执行绪。采用GET方法向URI下载指定资源。

OpenReadAsync

以非同步方式从资源传回资料,而不封锁呼叫的执行绪。采用下载封装的方式,让资源回传时是属于一个独立的档案集合。采用GET方法向URI下载指定资源。

上方四种是常用于非同步作业使用的方法。然而在使用WebClient类别需要注意Silverlight针对网路存取的限制,可以参考:< Silverlight中的网路安全性存取限制 >与< Silverlight中的URL存取限制 >。另外,也许你会像我一样不太了解为何有一个DownloadStringAsync或UploadStringAsync的方法出现,因为在网路上搜寻看到WebClient类别的范例都是使用另外二种:OpenWriteAsync与OpenReadAsync来储存网路资源。也许你可以依照下方的分类来按需求使用:

〉DownloadStringAsync/UploadStringAsync:适用于当接收端接受传送资料的类型,例如:XML、JSON等其他相关文字类型。

〉OpenWriteAsync/OpenReadAsync:适用接收端使用POST方式接收/取得资料流的类型,例如:可转成Stream的资料料型。

 

posted @ 2012-08-31 10:37  海之澜  阅读(1116)  评论(0编辑  收藏  举报