Your SlideShare is downloading. ×
Apple iOS - Webservices
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Apple iOS - Webservices

334

Published on

Webservice-Anbindung (SOAP / REST) unter Apple iOS

Webservice-Anbindung (SOAP / REST) unter Apple iOS

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
334
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. iOS Webservices Sebastian Meßingfeld 06.06.2013 1© FH AACHEN | Sebastian Meßingfeld
  • 2. Inhalt 2© FH AACHEN | Sebastian Meßingfeld •  Unterstützung von Webservices in iOS •  Allgemein •  SOAP •  REST •  Fazit •  Demo •  Tools
  • 3. Webservices Allgemein •  keine komfortable Unterstützung für REST / SOAP und andere WS in Cocoa Touch vorhanden •  keine speziellen WS-API vorhanden •  rudimentäre Abfrage von Ressourcen über URLs möglich •  deckt Möglichkeiten des HTTP-Protokoll ab •  Verarbeitung von Rückgaben •  keine komfortable XML/JSON/CVS ... API für Verarbeitung in Cocoa Touch vorhanden •  siehe Praktikum „Daten“ •  Verwendung von Dritt-Bibliotheken nötig 3© FH AACHEN | Sebastian Meßingfeld
  • 4. Webservices Allgemein •  keine „Rapid-Prototyping“-Unterstützung für Entwicklung / zum Testen •  wie, z.B. generelle Kommunikation mit WS •  + Erweiterungen, wie OAuth •  REST-Lösung: •  Skript-Sprachen: schnelle Implementierung (Ruby) •  Tools: SoapUI (mit WADL) •  SOAP-Lösung: •  Tools: SoapUI, Oxygen XML Editor (beides WSDL) •  Ergebnisse des Prototypings können nicht direkt in Cocoa Touch weiterverwendet / -verarbeitet werden 4© FH AACHEN | Sebastian Meßingfeld
  • 5. Webservice Testen - SoapUI •  SoapUI: Test-Tool für Webservices •  Unterstützung für SOAP und REST •  SOAP-Unterstützung besser, da WSDL immer vorhanden ist •  Unterstützung für WADL für REST auch vorhanden •  WS-Abfragen sind über eine dynamische GUI möglich 5© FH AACHEN | Sebastian Meßingfeld
  • 6. Webservices Testen – SoapUI (Beispiel SOAP Abfrage) 6© FH AACHEN | Sebastian Meßingfeld
  • 7. Webservices Kommunikation über HTTP mittels Cocoa Touch 7© FH AACHEN | Sebastian Meßingfeld •  HTTP-Requests möglich •  synchron •  asynchron (Verarbeitung über Callback-Methoden) •  Requests anpassbar •  HTTP-Methode („POST“, „GET“) •  HTTP-Header (Standard + eigene) •  POST-Daten •  Kommunikation zu allen Webservices damit möglich •  ggf. jedoch sehr aufwendig
  • 8. Webservices HTTP Request in Cocoa Touch (Beispiel) 8© FH AACHEN | Sebastian Meßingfeld // Request mit Ziel-URL erstellen! NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL " " URLWithString:@"http://localhost:8888/ios.php"]];! // HTTP-Methode setzen! [request setHTTPMethod:@"POST"];! ! // Modifizieren / Hinzufuegen von HTTP-Headern! [request setValue:@"Access-Control-Max-Age" forHTTPHeaderField:@"1728000"];! ! // POST-Daten! // Key-Value-Paare! NSString *postFields = @"username=Max&passwort=Mustermann";! // "Rohdaten”! NSString *postRaw = @"{'username':'Max','password':'Mustermann'}";! ! // Setzen der zu sendenen Daten (postRaw oder postFields)! NSData *postData = [postRaw dataUsingEncoding:NSUTF8StringEncoding];! [request setHTTPBody:postData];! ! // Request absetzen! [NSURLConnection sendSynchronousRequest:request returningResponse:nil " " " " " error:nil];
  • 9. SOAP 9© FH AACHEN | Sebastian Meßingfeld
  • 10. Webservices SOAP – Waaruuummmm? 10© FH AACHEN | Sebastian Meßingfeld
  • 11. Webservices SOAP – Cocoa Touch 11© FH AACHEN | Sebastian Meßingfeld •  keine Lösung in Cocoa Touch vorhanden •  Request •  XML-DOM selbst zusammenbauen •  String-Verknüpfung (als eine Art Template) •  Response •  NSXML (SAX) •  libxml2 (DOM-Verarbeitung / C Bibliothek) •  Dritt-Bibliothek: z.B. TouchXML •  keine (gute) Dritt-Bibliothek für SOAP vorhanden
  • 12. Webservices SOAP – Code-Generierung 12© FH AACHEN | Sebastian Meßingfeld •  Generierung von Code auf Basis von WSDL •  mittels wsdl2objc •  Abstrahierung der Soap Requests •  erzeugt im „Hintergrund“ XML Baum für Request
  • 13. Webservices SOAP – Code-Generierung mittels wsdl2objc 13© FH AACHEN | Sebastian Meßingfeld •  Vorteile •  Verwendung des WS über ObjC Methoden •  wenig Berührungspunkte mit XML •  SOAPSecurity vorhanden (Signierung / Zertifikate) •  nicht getestet •  Nachteile •  erzeugt 13.952 Zeilen („statischen“) Code •  Kenntnisse über den Aufbau des WS nötig •  Tool ist „alt“ und wird nicht weiter gepflegt •  erzeugt keinen ARC-Code •  Code funktionierte nur nach eigenen Anpassungen (bei Bing WS) •  kein parameters Knoten im Request erzeugt
  • 14. Webservices SOAP – Code-Generierung mittels wsdl2objc 14© FH AACHEN | Sebastian Meßingfeld BingPortBinding *binding = [BingServiceSvc BingPortBinding];! binding.logXMLInOut = @YES;! ! // Erzeugung des Services! BingServiceSvc_SearchRequest *request = [BingServiceSvc_SearchRequest new];! request.AppId = @”****************************************";! request.Version = @"2.2";! request.Query = @"Borussia Dortmund";! request.Adult = BingServiceSvc_AdultOption_Moderate;! ! // Source Typen festlegen! BingServiceSvc_ArrayOfSourceType* sources = [BingServiceSvc_ArrayOfSourceType new];! [sources addSourceType:BingServiceSvc_SourceType_Web];! ! // Web-Request ! BingServiceSvc_WebRequest *webRequest = [BingServiceSvc_WebRequest new];! webRequest.Offset = @0;! webRequest.Count = @1;! ! request.Sources = sources;! request.Web = webRequest;! ! // Ergebnisse verarbeiten! BingPortBindingResponse *response = [binding SearchUsingParameters:request];! NSArray *responseHeaders = response.headers;! NSArray *responseBodyParts = response.bodyParts;
  • 15. REST 15© FH AACHEN | Sebastian Meßingfeld
  • 16. Webservices REST – Alle nutzen REST 16© FH AACHEN | Sebastian Meßingfeld
  • 17. Webservices REST 17© FH AACHEN | Sebastian Meßingfeld •  Keine native Unterstützung in Coacoa Touch •  Interaktion durch direkte HTTP-Requests oder Dritt-Bibliotheken •  Restly •  RestKit •  Keine WADL Unterstützung
  • 18. Webservices REST – RestKit 18© FH AACHEN | Sebastian Meßingfeld •  Objective-C Framework für iOS zur Interaktion mit RESTful WS •  „simple, fast and fun“ •  Umfangreiche Funktionalität •  HTTP Request/Response System •  Object-Mapper •  Core Data Support •  Unterstützt JSON •  Erweiterbar um weitere Parser (z.B. XML)
  • 19. Webservices REST – Request und Mapping 19© FH AACHEN | Sebastian Meßingfeld NSURL *baseUrl = [NSURL URLWithString:@"http://foo.bar/api1/"];! ! // ObjectManager für WS erstellen! RKObjectManager* manager = [RKObjectManager managerWithBaseURL:baseUrl];! [manager.HTTPClient setDefaultHeader:@"X-Custom-Header" value:@"foobar"];! ! // Router für Klasse Article setzen! [manager.router.routeSet addRoute:[RKRoute routeWithClass:[Article class] ! pathPattern:@"/articles/:articleID/" method:RKRequestMethodGET]];! ! // leeres Article-Objekt für Response erstellen! Article *article = [Article new];! ! // GET Request senden an '/articles/12345‘! [manager getObject:article path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {! NSLog(@"Loading mapping result: %@", result);! } failure:nil];!
  • 20. Fazit 20© FH AACHEN | Sebastian Meßingfeld
  • 21. Webservices Fazit für iOS 21© FH AACHEN | Sebastian Meßingfeld •  keine einheitlichen Standards bei WS vorhanden •  bspw. Authentifizierung •  SOAP Unterstützung quasi nicht vorhanden •  „REST“ hat (zu) viele Ausprägungen •  Zugriffe auf Webservices nicht immer „App- geeignet“ •  bspw. Authentifizierung (OAuth: Callback) •  daher Zugriffe auf Webservice häufig über SDK des Webservice-Anbieters (Facebook, Twitter, ...)
  • 22. Demo 22© FH AACHEN | Sebastian Meßingfeld
  • 23. Tools / Bibliotheken •  SOAP / XML •  SoapUI •  http://www.soapui.org/ •  Oxygen XML Editor •  WSDL SOAP Analysator •  wsdl2objc •  https://code.google.com/p/wsdl2objc/ 23© FH AACHEN | Sebastian Meßingfeld
  • 24. FH Aachen Fachbereich Elektrotechnik & Informationstechnik Sebastian Meßingfeld 24© FH AACHEN | Sebastian Meßingfeld

×