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