Windows Phone访问web service和WCF服务
Windows phone也像传统的.net应用一样,可以方便的调用web service和WCF服务。首先创建一个web service服务,因为.NET Framework 4的版本没有Web Service模板,所以选择.NET Framework 3.5来创建“ASP.NET Web服务应用程序”:
在Service.cs中的Service的类中写如下方法:
[*]
[*] public byte[] GetCity()
[*] {
[*] System.IO.MemoryStream m = new System.IO.MemoryStream();
[*] System.Drawing.Bitmap bp = new System.Drawing.Bitmap(Server.MapPath("~")+@"/a.jpg");
[*] bp.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);
[*] return m.GetBuffer();
[*] }
.NET Framework 4下创建“WCF服务应用程序”:
在IService1.cs接口中添加如下方法:
[*]
[*] byte[] GetCity();
在子类Service1中添加如下方法:
[*]public byte[] GetCity()
[*]{
[*] System.IO.MemoryStream m = new System.IO.MemoryStream();
[*] System.Drawing.Bitmap bp = new System.Drawing.Bitmap(@"C:\Users\GSW\Documents\Visual Studio 2010\Projects\WebSite4\WcfService1\a.jpg");
[*] bp.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);
[*] return m.GetBuffer();
[*]}
创建Windows Phone, “添加服务引用”,引入web service或wcf服务,引用服务默认名称为“ServiceReference1”,的页面后台添加代码如下:
[*]//定义服务引用对象
[*]ServiceReference1.Service1Client serviceclient;
[*] public MainPage()
[*] {
[*] InitializeComponent();
[*] serviceclient = new ServiceReference1.Service1Client();
[*]//为异常完成事件添加回调方法
[*]serviceclient.GetCityCompleted += new EventHandler<ServiceReference1.GetCityCompletedEventArgs>(serviceclientc_GetCityCompleted);
[*]
[*] }
[*] private void button1_Click(object sender, RoutedEventArgs e)
[*] {
[*] //调用异常方法
[*] serviceclient.GetCityAsync();
[*] }
[*]
[*] void serviceclient_GetCityCompleted(object sender, ServiceReference1.GetCityCompletedEventArgs e)
[*] {
[*]//回调方法中完成图片的加载显示
[*] byte[] buf = e.Result;
[*] System.IO.MemoryStream stream = new System.IO.MemoryStream(buf);
[*] BitmapImage img = new BitmapImage();
[*] img.SetSource(stream);
[*] image1.Source = img;
[*] }
不管是web service还是wcf服务,Windows Phone中使用方法都是一至的,采用异步调用方式,这样用户体验要好一些。
页:
[1]