為 了便于理解,我先講下soap的大體原理:我們在iPhone封裝soap請求信息,發送到某個提供soap服務的服務器,如下例中我們用到的http://www.Nanonull.com/TimeService/.服 務器能接受和識別soap請求,當它接到請求,就根據客戶端的請求情況調用服務器上的某個函數,并將函數返回結果封裝成soap反饋信息發送給客戶端.客 戶端接收到soap反饋信息后,進行解析處理,以用戶能理解的形式呈現給用戶.整個過程就這么簡單.
好了,假設現在你已經有關于 soap的基礎知識(沒有也沒關系,看了例子,再理解就更好理解了),下面我們開始做soap的例子.
第一步,建一個 Hello_SOAP項目.用IB將Hello_SOAPViewController.xib做成如下圖的界面
然后在Hello_SOAPViewController.h中添加如下代碼
代碼
1. @interface Hello_SOAPViewController : UIViewController 2. { 3. IBOutlet UITextField *nameInput; 4. IBOutlet UILabel *greeting; 5. 6. NSMutableData *webData; 7. NSMutableString *soapResults; 8. NSXMLParser *xmlParser; 9. BOOL recordResults; 10. } 11. 12. @property(nonatomic, retain) IBOutlet UITextField *nameInput; 13. @property(nonatomic, retain) IBOutlet UILabel *greeting; 14. 15. @property(nonatomic, retain) NSMutableData *webData; 16. @property(nonatomic, retain) NSMutableString *soapResults; 17. @property(nonatomic, retain) NSXMLParser *xmlParser; 18. 19. -(IBAction)buttonClick: (id) sender; 20. - (void)getOffesetUTCTimeSOAP;
然后在Hello_SOAPViewController.xib中將兩個輸出口和一個動作連接好,這個不用手把手吧?
在 Hello_SOAPViewController.m文件中加入以下方法 :
代碼
1. - (void)getOffesetUTCTimeSOAP 2. { 3. recordResults = NO; 4.//封裝soap請求消息 5. NSString *soapMessage = [NSString stringWithFormat: 6. @"n" 7. "n" 8. "n" 9. "n" 10. "%@n" 11. "n" 12. "n" 13. "n",nameInput.text 14. ]; 15. NSLog(soapMessage); 16. //請求發送到的路徑 17. NSURL *url = [NSURL URLWithString:@"http://www.nanonull.com/TimeService/TimeService.asmx"]; 18. NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 19. NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 20. 21. // 以下對請求信息添加屬性前四句是必有的,第五句是soap信息。 22. [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 23. [theRequest addValue: @"http://www.Nanonull.com/TimeService/getOffesetUTCTime" forHTTPHeaderField:@"SOAPAction"]; 24. 25. [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 26. [theRequest setHTTPMethod:@"POST"]; 27. [theRequest setHTTPBody: [soapMessage dataUsin
新聞熱點
疑難解答