Windows phone也像传统的.net应用一样,可以方便的调用web service和WCF服务。
首先创建一个web service服务,因为.NET Framework 4的版本没有Web Service模板,所以选择.NET Framework 3.5来创建“ASP.NET Web服务应用程序”:
在Service.cs中的Service的类中写如下方法:
- [WebMethod]
- 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接口中添加如下方法:
- [OperationContract]
- 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中使用方法都是一至的,采用异步调用方式,这样用户体验要好一些。
本文转自桂素伟51CTO博客,原文链接: http://blog.51cto.com/axzxs/866453,如需转载请自行联系原作者