成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone中調(diào)用WCF RESTful Service

移動開發(fā) iOS
REST(Representational State Transfer)是一種輕量級的Web Service架構風格,本文介紹了如何使用WCF創(chuàng)建restful分格的服務。通過這篇文章,作者將會通過一個demo來展示如何在iPhone中調(diào)用WCF restful service。

在前面我們介紹過跨平臺iPhone中調(diào)用WCF服務,講述的如何在iPhone中調(diào)用WCF服務。我現(xiàn)在開發(fā)是調(diào)用webService的,方式和那篇文章一樣。需要定義soap,然后異步去調(diào)用服務端的方法,等服務端執(zhí)行完成,然后在iPhone客戶端接受返回的XML,***解析返回的XML。這種方式用起來非常的不方便,每一次調(diào)用即需要寫自定義的soap,又要解析XML。這篇文章我將講述一下如何調(diào)用RESTful方式的WCF服務。

REST(Representational State Transfer)是一種輕量級的Web Service架構風格,其實現(xiàn)和操作明顯比SOAP和XML-RPC更為簡潔,可以完全通過HTTP協(xié)議實現(xiàn),還可以利用緩存Cache來提高響應速度,性能、效率和易用性上都優(yōu)于SOAP協(xié)議。使用WCF創(chuàng)建RESTful分格的服務是非常方便的。這篇文章,我通過一個demo來展示如何在iPhone中調(diào)用WCF RESTful Service。

創(chuàng)建一個WCF RESTful Service。

1、創(chuàng)建一個數(shù)據(jù)交換實體類

  1. /// <summary>  
  2. /// User實體類  
  3. /// </summary>  
  4. [DataContract]  
  5. public class User  
  6. {  
  7.     /// <summary>  
  8.     /// 用戶名  
  9.     /// </summary>  
  10.     [DataMember(Order = 0)]  
  11.     public string Name { get; set; }  
  12.     /// <summary>  
  13.     /// 生日  
  14.     /// </summary>  
  15.     [DataMember(Order = 1)]  
  16.     public string DayOfbirth { get; set; }  

2、服務契約:定義了三個方法,分別用來獲取用戶的XML格式、json格式以及創(chuàng)建用戶。

  1. [ServiceContract]  
  2. public interface IService1  
  3. {  
  4.     /// <summary>  
  5.     /// 創(chuàng)建用戶  
  6.     /// </summary>  
  7.     /// <summary>  
  8.     /// 獲取用戶信息,json格式  
  9.     /// </summary>  
  10.     /// <param name="name">用戶名</param>  
  11.     [OperationContract]  
  12.     [WebGet(  
  13.         UriTemplate = "User/{name}",  
  14.         ResponseFormat = WebMessageFormat.Json)]  
  15.     User GetUser(string name);  
  16.     /// <summary>  
  17.     /// 獲取用戶信息,XML格式  
  18.     /// </summary>  
  19.     /// <param name="name">用戶名</param>  
  20.     /// <remarks>  
  21.      /// </remarks>  
  22.     [OperationContract]  
  23.     [WebGet(  
  24.         UriTemplate = "UserXML/{name}",  
  25.         ResponseFormat = WebMessageFormat.Xml)]  
  26.     User GetUserXML(string name);  
  27.     /// <summary>  
  28.     /// 創(chuàng)建用戶信息  
  29.     /// </summary>  
  30.     /// <param name="name">用戶名</param>  
  31.     /// <param name="dayOfbirth">生日</param>  
  32.     /// <returns></returns>  
  33.     [OperationContract]  
  34.     [WebInvoke(UriTemplate = "User/{name}/{dayOfbirth}",  
  35.         Method = "POST",  
  36.         ResponseFormat = WebMessageFormat.Json)]  
  37.     User CreateUser(string name, string dayOfbirth);  
  38.    } 

3、服務實現(xiàn):這里簡單處理。

  1. public class Service1 : IService1  
  2. {  
  3.     public User GetUser(string name)  
  4.     {  
  5.         return new User { Name = name, DayOfbirth = new DateTime(1986, 10, 23).ToString() };  
  6.     }  
  7.     public User GetUserXML(string name)  
  8.     {  
  9.         return new User { Name = name, DayOfbirth = new DateTime(1986, 10, 23).ToString() };  
  10.     }  
  11.     public User CreateUser(string name, string dayOfbirth)  
  12.     {  
  13.         return new User { Name = name, DayOfbirth = dayOfbirth };  
  14.     }  

4、對于vs2008創(chuàng)建的wcf服務,需要在.svc文件中加入下面代碼:

  1. Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

5、在web.config中將綁定方式改成webHttpBinding

6、在iis發(fā)布服務。

iPhone客戶端調(diào)用:

這里使用ASIHTTPRequest,它是一個直接在CFNetwork上做的開源項目,提供了一個比官方更方便更強大的HTTP網(wǎng)絡傳輸?shù)姆庋b,非常的好用。

在xcode中拖一個簡單的界面,如下圖,分別調(diào)用服務端的三個方法:

定義下面三個方法與三個button的點擊事件對應:

  1. - (IBAction)fetchXML:(id)sender;  
  2. - (IBAction)fetchJson:(id)sender;  
  3. - (IBAction)createJson:(id)sender; 

三個點擊事件的具體實現(xiàn):下面的代碼為了簡單起見,直接將xml和json輸入。比較好的做法是:在iPhone也定義一個User類,將json或者XML轉(zhuǎn)換為User實體對象。

  1. - (IBAction)fetchXML:(id)sender  
  2. {  
  3.     NSURL *url = [NSURL URLWithString:@"http://10.5.23.117:21924/Service1.svc/UserXML/zhuqilin"];  
  4.     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  
  5.     [request startSynchronous];  
  6.     NSError *error = [request error];  
  7.     if (!error) {  
  8.         NSString *response = [request responseString];  
  9.         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"xml格式" 
  10.                                                             message:response  
  11.                                                            delegate:nil  
  12.                                                   cancelButtonTitle:@"OK" 
  13.                                                   otherButtonTitles:nil];  
  14.         [alertView show];  
  15.         [alertView release];  
  16.     }  
  17.     }  
  18. - (IBAction)fetchJson:(id)sender  
  19. {  
  20.     NSURL *url = [NSURL URLWithString:@"http://10.5.23.117:21924/Service1.svc/User/zhuqilin"];  
  21.     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  
  22.     [request startSynchronous];  
  23.     NSError *error = [request error];  
  24.     if (!error) {  
  25.         NSString *response = [request responseString];  
  26.         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"JSON格式" 
  27.                                                             message:response  
  28.                                                            delegate:nil  
  29.                                                   cancelButtonTitle:@"OK" 
  30.                                                   otherButtonTitles:nil];  
  31.         [alertView show];  
  32.         [alertView release];  
  33.     }  
  34. }  
  35. - (IBAction)createJson:(id)sender  
  36. {  
  37.     NSURL *url = [NSURL URLWithString:@"http://10.5.23.117:21924/Service1.svc/User/zhuqilin/1986-09-20"];  
  38.     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  
  39.     [request setRequestMethod:@"POST"];  
  40.     [request startSynchronous];  
  41.     NSError *error = [request error];  
  42.     if (!error) {  
  43.         NSString *response = [request responseString];  
  44.         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"創(chuàng)建用戶" 
  45.                                                             message:response  
  46.                                                            delegate:nil  
  47.                                                   cancelButtonTitle:@"OK" 
  48.                                                   otherButtonTitles:nil];   
  49.        [alertView show];  
  50.         [alertView release];  
  51.     }  

輸出結果:

1、獲取json格式的數(shù)據(jù)

2、獲取xml格式的數(shù)據(jù)

3、創(chuàng)建一個用戶實體:

總結:本文通過一個簡單的例子說明了如何在iPhone中調(diào)用WCFRESTful服務。你會感覺到這個方式,比去定義soap去調(diào)用要好很多。

【編輯推薦】

  1. iPhone開發(fā)關于icon和Default及圖片處理方法
  2. 官方文檔 用MacRuby及Xcode 4開發(fā)獨立iOS應用
  3. iOS設計指南:用戶接口原則
  4. iOS雙搖桿射擊游戲的設計原理
  5. iPhone辦公程序大百科 10大iOS效率應用
責任編輯:佚名 來源: 博客園
相關推薦

2011-07-08 20:54:12

iPhone WCF

2011-04-01 10:40:53

WCFiPhone調(diào)用

2009-12-08 16:42:48

WCF Service

2009-12-08 18:14:53

WCF Service

2009-12-07 18:33:31

WCF Service

2009-12-08 16:01:50

WCF Service

2009-11-06 10:11:34

WCF和Web Ser

2009-12-08 17:16:37

WCF Web Ser

2009-12-22 15:14:33

WCF調(diào)用

2009-11-06 13:59:09

WCF Service

2009-12-21 14:10:26

WCF異步調(diào)用

2010-02-24 13:42:55

WCF PreSess

2010-02-25 10:35:17

WCF排隊調(diào)用

2009-07-27 17:54:39

WCF服務ASP.NET

2009-11-09 10:50:30

WCF異步調(diào)用

2009-06-12 14:32:53

WCFJSON對象jQuery

2009-11-06 15:54:15

WCF異步調(diào)用

2011-05-16 09:30:30

jQueryWCF

2009-12-22 18:43:00

WCF異步調(diào)用

2012-05-03 11:43:32

ApacheCXFRESTful
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜一区| 91综合网| 亚洲视频一区在线观看 | 狠狠操网站 | 亚洲视频三 | 国产日韩欧美综合 | 国产精品av久久久久久久久久 | 毛片在线看看 | 无吗视频 | 精品国产视频在线观看 | 国产精品色 | 欧美专区在线 | 国产精品国产成人国产三级 | 涩色视频在线观看 | 久久国产区 | 国产亚洲精品综合一区 | a级在线免费 | 欧美九九 | 亚洲精品视频网站在线观看 | 特黄特色大片免费视频观看 | 欧美精品一级 | 国产精品免费小视频 | 欧美日韩高清在线一区 | 伊大人久久 | japanhd美女动 | 亚洲欧洲一区二区 | 97精品久久 | 久久精品免费观看 | 欧美啪啪| 夜夜操天天干 | 国产精品久久久精品 | 国产精品99久久久久久久vr | 99色在线 | 午夜电影在线播放 | 久草热视频 | 亚洲二区视频 | 7777精品伊人久久精品影视 | 福利视频一区 | 国产亚洲精品精品国产亚洲综合 | 青青久久 | 亚洲精品区 |