1. 程式人生 > >IOS 呼叫WebService 同步和非同步

IOS 呼叫WebService 同步和非同步

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

因為公司的服務全都是webservice,每次總要花費大量時間在除錯服務上面,乾脆就寫了一個解析wsdl的專案,希望將來能用上吧。還未經過烘焙,有問題,還請高手點播點播。

 

下面,我拿天氣服務的wsdl作為例子吧。

 

服務的WSDL地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

 

WSDL包含以下節點

 

definitions 根節點

 

根節點下面有以下節點:

 

types 資料型別定義。方法的引數名都包含在裡面。

 

message 訊息資料結構。

 

portType 描述服務和服務的方法。

 

binding 描述Web Service的通訊協議。

 

service 描述Web Service 的訪問點的集合。

 

下面對來一步一步解析如何根據wsdl 生成SOAP 訊息體。

 

1.新增一個類擴充套件,如下圖DDXMLElement+WSDL.h和DDXMLElement+WSDL.m

 


201307270824.jpg

 

標頭檔案中,暴露以下方法

 


201307270825.jpg

 

2.SoapUtility 檔案是用來封裝soap訊息的。SoapUtility呼叫DDXMLElement+WSDL

 

在SoapUtility標頭檔案中,暴露以下方法

 


201307270825.jpg

 

3.服務呼叫,上面,都把Soap訊息給準備好了。那麼最後一步就是服務的呼叫了。這裡分兩種呼叫方式:同步和非同步。

 


201307270826.jpg

 

4.使用方法,下面是天氣服務的呼叫例子

 
  

  

//引數列表

  

NSDictionary *dic=@{@"theCityName": cityname};

  

//方法名

  

NSString *methodName=@"getWeatherbyCityName";

  

  

  

//封裝soap信封

  

SoapUtility *soaputility=[[SoapUtility alloc] initFromFile:@"WeatherWebService"];

  

NSString *postData=[soaputility BuildSoapwithMethodName:@"getWeatherbyCityName" withParas:dic];

  

  

  

//初始化服務

  

SoapService *soaprequest=[[SoapService alloc] init];

  

soaprequest.PostUrl=@"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";

  

soaprequest.SoapAction=[soaputility GetSoapActionByMethodName:methodName SoapType:SOAP];

  

  

  

if (isSync) {

  

//同步方法

  

ResponseData *result= [soaprequest PostSync:postData];

  

[self.result setText:result.Content];

  

}

  

else{

  

//非同步請求

  

[soaprequest PostAsync:postData Success:^(NSString *response) {

  

[self.result setText:response];

  

} falure:^(NSError *response) {

  

[self.result setText:response.description];

  

}];

  

}

 
 

5.程式碼實現

 

https://github.com/xujialiang/SOAP-IOS

 

歡迎大家給意見。


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述