日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

访问Web服务器时 使用的协议是,使用SOAP协议访问Web服务

發布時間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 访问Web服务器时 使用的协议是,使用SOAP协议访问Web服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SOAP是簡單對象訪問協議,它可看成是HTTP與XML的結合,其中XML部分是作為HTTP報文的實體主體部分。

SOAP:簡單對象訪問協議,是一種輕量的、簡單的、基于 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。

下面重點說下:

在iOS中使用SOAP,需要我們自己組裝XML格式的字符串,當XML字符串比較長的時候會變得很麻煩。另外,我們在寫XML格式的字符串時也要經常使用轉義字符“\”。

若在mobileCode輸入手機號碼,userID不輸入,點擊調用,則結果如下:

看看剛才那個網頁的內容,注意到SOAP 1.2標簽下的內容:

上面的這段文本就是使用SOAP 1.2的請求報文格式,就是一個HTTP請求報文,注意空行上面的那些內容中的請求行與各首部行的每個字段名,在下面的示例中會用到。這個HTTP請求報文的實體主體部分是XML格式的一段文本,注意Body標簽之間的內容。

服務器的響應報文格式如下:

我們要用到的只有getMobileCodeInfoResult這個標簽。

這次的例子是實現通過SOAP服務查詢手機號碼歸屬地、運行商等信息。PS:用的Xcode 4.4.1。

1、運行Xcode 4.4.1,新建一個Single View Application,名稱為SOAP Test:

2、界面設計:打開ViewController.xib,設計界面如下所示:

在文本輸入框的Attribute Inspector中設置其Keyboard屬性為Number Pad。

3、之后向ViewController.h中,為文本輸入框創建OutLet映射,名稱為:phoneNumber;為“查詢”按鈕創建Action映射,事件類型為Touch Up Inside,名稱為:doQuery。建立映射的方法就是打開Assistant Editor,選中某一控件,按住Ctrl,拖向ViewController.h。

4、在ViewController.h中添加代碼:

4.1 在@interface那行最后添加代碼

使ViewController遵守這兩個協議。前者用來解析XML,后者用于網絡連接。

4.2 在@end之前添加代碼@property(strong,nonatomic)NSMutableData*webData;@property(strong,nonatomic)NSMutableString*soapResults;@property(strong,nonatomic)NSXMLParser*xmlParser;@property(nonatomic)BOOL elementFound;@property(strong,nonatomic)NSString*matchingElement;@property(strong,nonatomic)NSURLConnection*conn;

5、在ViewController.m中添加代碼:

5.1 在@implementation之后添加代碼@synthesizewebData;@synthesizesoapResults;@synthesizexmlParser;@synthesizeelementFound;@synthesizematchingElement;@synthesizeconn;

5.2 實現doQuery方法

5.3 在@end之前添加代碼#pragmamark-#pragmamark URLConnectionDataDelegateMethods// 剛開始接受響應時調用-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{[webData setLength:0];}// 每接收到一部分數據就追加到webData中-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data{[webData appendData:data];}// 出現錯誤時-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error{conn=nil;webData=nil;}// 完成接收數據時調用-(void)connectionDidFinishLoading:(NSURLConnection*)connection{NSString*theXML=[[NSStringalloc]initWithBytes:[webData mutableBytes]length:[webData length]encoding:NSUTF8StringEncoding];// 打印出得到的XMLNSLog(@"%@",theXML);// 使用NSXMLParser解析出我們想要的結果xmlParser=[[NSXMLParseralloc]initWithData:webData];[xmlParser setDelegate:self];[xmlParser setShouldResolveExternalEntities:YES];[xmlParser parse];}

5.4 在@end之前添加代碼#pragmamark-#pragmamark XMLParserDelegateMethods// 開始解析一個元素名-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict{if([elementName isEqualToString:matchingElement]){if(!soapResults){soapResults=[[NSMutableStringalloc]init];}elementFound=YES;}}// 追加找到的元素值,一個元素值可能要分幾次追加-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString*)string{if(elementFound){[soapResults appendString:string];}}// 結束解析這個元素名-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName{if([elementName isEqualToString:matchingElement]){UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"手機號碼信息"message:[NSStringstringWithFormat:@"%@",soapResults]delegate:selfcancelButtonTitle:@"確定"otherButtonTitles:nil];[alert show];elementFound=FALSE;// 強制放棄解析[xmlParser abortParsing];}}// 解析整個文件結束后-(void)parserDidEndDocument:(NSXMLParser*)parser{if(soapResults){soapResults=nil;}}// 出錯時,例如強制結束解析-(void)parser:(NSXMLParser*)parser parseErrorOccurred:(NSError*)parseError{if(soapResults){soapResults=nil;}}

6、運行

其中,輸入號碼時單擊查詢,打印出的響應XML如下:

總結

以上是生活随笔為你收集整理的访问Web服务器时 使用的协议是,使用SOAP协议访问Web服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。