Using Webservice in iOS


Published on

This is a comprehensive slide on implementing web service in iOS . There are basic information on Web Service . There are steps of using web service in iOS. The presentation emphasized on XML Parsing .

Published in: Technology
    Are you sure you want to  Yes  No
    Your message goes here

Using Webservice in iOS

  1. 1. Working with Web Service in iOS
  2. 2. Syed Mahboob Nur iOS Developer Blog: Fb Profile: Meetnar Profile:
  3. 3. Web Service A Web service is a method of communications between two electronic devices over the World Wide Web. It is a software function provided at a network address over the web with the service always on as in the concept of utility computing.
  4. 4. Several Types of Web Services WSDL • WSDL stands for Web Services Description Language • WSDL is an XML-based language for describing Web services. • WSDL is a W3C recommendation
  5. 5. Several Types of Web Services SOAP • SOAP stands for Simple Object Access Protocol • SOAP is an XML based protocol for accessing Web Services. • SOAP is based on XML • SOAP is a W3C recommendation
  6. 6. Several Types of Web Services UDDI • UDDI stands for Universal Description, Discovery and Integration • UDDI is a directory service where companies can search for Web services. • UDDI is described in WSDL • UDDI communicates via SOAP
  7. 7. Several Types of Web Services RDF • RDF stands for Resource Description Framework • RDF is a framework for describing resources on the web • RDF is written in XML • RDF is a W3C Recommendation
  8. 8. Advantage of Using Web Service in Mobile Application • • • • Minimize application size Minimize Code Size Easy to modify Reuse Application
  9. 9. Disadvantage of Using Web Service in Mobile Application • Internet Connection Required • Server have to be active 24/7
  10. 10. Working with Web Service in iOS (WSDL) WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services)
  11. 11. WSDL Example <xml> <types> <schema targetNamespace=" stockquote.xsd" xmlns=" XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> </xml>
  12. 12. Steps of Implementing XML Service in IOS • Create a XML Parser file as NSObject type. • Write relevant code in the files. • Call the XML Parser class in a View Controller Class and load XML by url . • Parse the data and load in the containers or view components. Example : Table View, Picker View, Labels, Text Field etc.
  13. 13. Create a XML Parser file as NSObject type. #import <Foundation/Foundation.h> //#import "TeamViewController.h" #import "TeamInfo.h" @interface TeamParser : NSObject<NSXMLParserDelegate> { NSString *currentNodeImage; NSString *currentNodeName; NSXMLParser *parser; NSMutableArray *imageArray; NSMutableArray *nameArray; TeamInfo*teamInfo; } @property (nonatomic, retain) NSMutableArray *imageArray; @property (nonatomic, retain) NSMutableArray *nameArray; -(id) loadXMLByURL:(NSString *)urlString; @end
  14. 14. .m file implementation #import "TeamParser.h" @implementation TeamParser @synthesize imageArray; -(id) loadXMLByURL:(NSString *)urlString { imageArray= [[NSMutableArray alloc] init]; nameArray=[[NSMutableArray alloc]init]; NSURL *url = [NSURL URLWithString:urlString]; //parser = [[NSXMLParser alloc] initWithData:aData]; parser= [[NSXMLParser alloc] initWithContentsOfURL:url]; //parser = [[NSXMLParser alloc] initWithData:aData]; parser.delegate=self; [parser parse]; return self; }
  15. 15. - (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if ([elementname isEqualToString:@"team"]) { currentNodeImage=[[NSString alloc] init] ; currentNodeName=[[NSString alloc]init]; teamInfo=[[TeamInfo alloc]init]; } }
  16. 16. - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([elementname isEqualToString:@"logo"]) { teamInfo.teamLogo = currentNodeImage; //NSLog(@"image:%@",currentNodeImage); } if ([elementname isEqualToString:@"name"]) { teamInfo.teamName = currentNodeImage; //NSLog(@"name:%@",currentNodeImage); } if ([elementname isEqualToString:@"team"]) { [imageArray addObject:teamInfo]; [currentNodeImage release]; [currentNodeName release]; currentNodeImage = nil; currentNodeName=Nil; }
  17. 17. Call the XML Parser class in a View Controller Class and load XML by url . -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:YES]; teamImageParser = [[TeamParser alloc] loadXMLByURL:@" o.xml"]; imageNameArray=teamImageParser.imageArray; teamNameArray=teamImageParser.nameArray; for(int i=0;i<[imageNameArray count];i++) { NSLog(@"%@",[imageNameArray objectAtIndex:i]); } for(int i=0;i<[teamNameArray count];i++) { NSLog(@"%@",[teamNameArray objectAtIndex:i]);
  18. 18. Plot Parsed Data in the TableView - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[teamImageParser imageArray] count]; }
  19. 19. Plot Parsed Data in the TableView - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"TeamCustomCell"; TeamCustomCell *cell = (TeamCustomCell*)[teamTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray *topLabelObject = [[NSBundle mainBundle] loadNibNamed:@"TeamCustomCell" owner:self options:nil]; for (id currentObject in topLabelObject) { if ([currentObject isKindOfClass:[UITableViewCell class]]) { cell = (TeamCustomCell*) currentObject; break;
  20. 20. TeamInfo *teamInfo; teamInfo = [[teamImageParser imageArray] objectAtIndex:indexPath.row]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.headerTextLabel.text=teamInfo.teamName; NSLog(@"teamName: %@",teamInfo.teamName); imageQueueTeamLogo = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); dispatch_async(imageQueueTeamLogo, ^ { UIImage *imageTVGuideLogo = [UIImage imageWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString:[teamInfo teamLogo]]]]; dispatch_async(dispatch_get_main_queue(), ^ { cell.titleImageView.image = imageTVGuideLogo; [cell setNeedsLayout]; }); }); return cell; }
  21. 21. That’s all for today