wp7,webClient&httpWebRequest&BitmapImage
2012-02-02 13:58
429 查看
不管是windows mobile还是windows phone7,对于连网问题都比较迷茫,现在也似乎似懂非懂,大致会使用一些简单的操作基本如下载xml、图片和上传xml、压缩包等。
1)webClient&httpWebRequest。
看了很多网上资料,发现webClient&httpWebRequest的使用区别大同小异,见参考一http://book.51cto.com/art/200905/124208.htm :
HttpWebRequest使用基于代理的异步编程模型,而WebClient使用基于事件的异步编程模型,基于事件的模型更容易使用。
在HTTP响应返回时引发的WebClient回调是在UI线程中调用的,因此可用于更新UI元素的属性,例如可用于显示HTTP响应中的数据;而HttpWebRequest回调不是在UI线程上返回的,因此在该回调中需要额外代码处理UI。这使得WebClient更适合于须要更新UI的应用程序。
后来自己使用的时候也没有发现多少大的区别,基本上是webClient已经封装好“请求和响应”,而httpWebRequest需要自己操作“请求和响应”。一般简单的连网问题,选择webClient比较简单方便。
webClient的基于事件的异步编程模型,可以帮助只需要使用事件来得到相应的结果,并且可以直接更新UI元素的属性;还有一个方便之处是webClient还提供进度条事件,使用比较简便;
httpWebRequest一般需要自己编写“请求和响应”,并且在更新UI元素的属性的时候需要“Dispatcher.BeginInvoke(() =>{……更新UI元素操作……});”。
2)连网时的进度条。
<1>webClient的进度条。
使用webClient下载文字和图片,分别使用DownloadStringCompleted和OpenReadCompleted,进度条基本上都是一下子就跳到100,相当于等下载完了才显示进度条一样。后来经风的帮助提醒,文字可能内容小下载速度快,直接显示100;图片的下载的话,就是存在问题才导致进度条一下子100。这个问题就是——wp7中DownloadProgressChanged事件在DownloadStringCompleted和OpenReadCompleted下是否启动有关:
在windows phone7中的WebClient.DownloadProgressChanged事件只有在DownloadStringAsync事件下才可以启动,详见http://msdn.microsoft.com/zh-cn/library/system.net.webclient.downloadprogresschanged(v=vs.95).aspx:
而类似于.net framework2.0、3.0等其他版本下的WebClient.DownloadProgressChanged事件在其他事件也可以启动,详见http://msdn.microsoft.com/zh-cn/library/system.net.webclient.downloadprogresschanged(v=vs.80).aspx:
从msdn上看出,进度条一下子跳到100是这个原因。如果这样理解是错误的,希望能够提醒一下,指正错误~
<2>关于下载图片,windows phone7中可以直接使用BitmapImage下载图片并线时进度。
bitmapimage有自带下载功能,而且自带progresschange事件。事实上demo的结果也是进度条从0一直到100根据图片的下载循序渐进,不存在什么异常情况。因此,有个建议:下载图片的时候可以使用bitmapimage,这样不管是下载还是显示进度条都比较简便。
详见http://msdn.microsoft.com/zh-cn/library/system.windows.media.imaging.bitmapimage_events(v=vs.95).aspx
简单介绍webClient和httpWebRequest的区别,webClient的进度条在windows phone7的区别,下载图片使用bitmapimage。如果有些问题我理解错了,恳请指点一二。
感谢微软论坛window phone开发群的风对我的帮助。
1)webClient&httpWebRequest。
看了很多网上资料,发现webClient&httpWebRequest的使用区别大同小异,见参考一http://book.51cto.com/art/200905/124208.htm :
HttpWebRequest使用基于代理的异步编程模型,而WebClient使用基于事件的异步编程模型,基于事件的模型更容易使用。
在HTTP响应返回时引发的WebClient回调是在UI线程中调用的,因此可用于更新UI元素的属性,例如可用于显示HTTP响应中的数据;而HttpWebRequest回调不是在UI线程上返回的,因此在该回调中需要额外代码处理UI。这使得WebClient更适合于须要更新UI的应用程序。
后来自己使用的时候也没有发现多少大的区别,基本上是webClient已经封装好“请求和响应”,而httpWebRequest需要自己操作“请求和响应”。一般简单的连网问题,选择webClient比较简单方便。
webClient的基于事件的异步编程模型,可以帮助只需要使用事件来得到相应的结果,并且可以直接更新UI元素的属性;还有一个方便之处是webClient还提供进度条事件,使用比较简便;
httpWebRequest一般需要自己编写“请求和响应”,并且在更新UI元素的属性的时候需要“Dispatcher.BeginInvoke(() =>{……更新UI元素操作……});”。
2)连网时的进度条。
<1>webClient的进度条。
使用webClient下载文字和图片,分别使用DownloadStringCompleted和OpenReadCompleted,进度条基本上都是一下子就跳到100,相当于等下载完了才显示进度条一样。后来经风的帮助提醒,文字可能内容小下载速度快,直接显示100;图片的下载的话,就是存在问题才导致进度条一下子100。这个问题就是——wp7中DownloadProgressChanged事件在DownloadStringCompleted和OpenReadCompleted下是否启动有关:
在windows phone7中的WebClient.DownloadProgressChanged事件只有在DownloadStringAsync事件下才可以启动,详见http://msdn.microsoft.com/zh-cn/library/system.net.webclient.downloadprogresschanged(v=vs.95).aspx:
而类似于.net framework2.0、3.0等其他版本下的WebClient.DownloadProgressChanged事件在其他事件也可以启动,详见http://msdn.microsoft.com/zh-cn/library/system.net.webclient.downloadprogresschanged(v=vs.80).aspx:
从msdn上看出,进度条一下子跳到100是这个原因。如果这样理解是错误的,希望能够提醒一下,指正错误~
<2>关于下载图片,windows phone7中可以直接使用BitmapImage下载图片并线时进度。
bitmapimage有自带下载功能,而且自带progresschange事件。事实上demo的结果也是进度条从0一直到100根据图片的下载循序渐进,不存在什么异常情况。因此,有个建议:下载图片的时候可以使用bitmapimage,这样不管是下载还是显示进度条都比较简便。
详见http://msdn.microsoft.com/zh-cn/library/system.windows.media.imaging.bitmapimage_events(v=vs.95).aspx
简单介绍webClient和httpWebRequest的区别,webClient的进度条在windows phone7的区别,下载图片使用bitmapimage。如果有些问题我理解错了,恳请指点一二。
感谢微软论坛window phone开发群的风对我的帮助。
相关文章推荐
- WebClient vs HttpClient vs HttpWebRequest
- 在 IIS 6 和 IIS 7中配置Https,设置WCF同时支持HTTP和HTPPS,以及使用HttpWebRequest和HttpClient调用HttpS
- wp7使用POST请求Asp.net网页时,HttpWebRequest的BeginGetResponse方法抛出NotSupportException异常的解决方法
- HttpWebRequest HttpClient
- WP7 HttpWebRequest跨线程异步更新界面UI
- 实测 c# .net 中 httpwebrequest 和 httpclient 性能 区别 对比
- 客户端和web交互&servlet创建&HttpServletRequest&HttpServlet&重定向和转发
- org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported
- httpwebrequest post &符号转义
- Windows Phone 7 网络编程之webclient和httpwebrequest的使用
- Windows Phone 7(WP7)开发 网络操作(1) HttpWebRequest基本的GET请求
- 反射:修改请求头HttpWebRequest/Webclient Header属性的date值-"此标头必须使用适当的属性进行修改"
- 异常详细信息: System.Web.HttpRequestValidationException: 从客户端(fck_content="<span style="bac...")中检测到有潜在危
- C#通过WebClient/HttpWebRequest实现http的post/get方法
- C#通过WebClient/HttpWebRequest实现http的post/get方法
- POST a string and an image in one request using HttpClient
- android webview & httpclient 处理 ssl (https)验证
- C#通过WebClient/HttpWebRequest实现http的post/get方法与java对接
- WP7中HttpWebRequest异常
- C#通过WebClient/HttpWebRequest实现http的post/get方法