iOS
Webservices
Sebastian Meßingfeld
06.06.2013
1© FH AACHEN | Sebastian Meßingfeld
Inhalt
2© FH AACHEN | Sebastian Meßingfeld
•  Unterstützung von Webservices in iOS
•  Allgemein
•  SOAP
•  REST
•  Fazit
•...
Webservices
Allgemein
•  keine komfortable Unterstützung für REST / SOAP
und andere WS in Cocoa Touch vorhanden
•  keine s...
Webservices
Allgemein
•  keine „Rapid-Prototyping“-Unterstützung für
Entwicklung / zum Testen
•  wie, z.B. generelle Kommu...
Webservice
Testen - SoapUI
•  SoapUI: Test-Tool für Webservices
•  Unterstützung für SOAP und REST
•  SOAP-Unterstützung b...
Webservices
Testen – SoapUI (Beispiel SOAP Abfrage)
6© FH AACHEN | Sebastian Meßingfeld
Webservices
Kommunikation über HTTP mittels Cocoa Touch
7© FH AACHEN | Sebastian Meßingfeld
•  HTTP-Requests möglich
•  sy...
Webservices
HTTP Request in Cocoa Touch (Beispiel)
8© FH AACHEN | Sebastian Meßingfeld
// Request mit Ziel-URL erstellen!
...
SOAP
9© FH AACHEN | Sebastian Meßingfeld
Webservices
SOAP – Waaruuummmm?
10© FH AACHEN | Sebastian Meßingfeld
Webservices
SOAP – Cocoa Touch
11© FH AACHEN | Sebastian Meßingfeld
•  keine Lösung in Cocoa Touch vorhanden
•  Request
• ...
Webservices
SOAP – Code-Generierung
12© FH AACHEN | Sebastian Meßingfeld
•  Generierung von Code auf Basis von WSDL
•  mit...
Webservices
SOAP – Code-Generierung mittels wsdl2objc
13© FH AACHEN | Sebastian Meßingfeld
•  Vorteile
•  Verwendung des W...
Webservices
SOAP – Code-Generierung mittels wsdl2objc
14© FH AACHEN | Sebastian Meßingfeld
BingPortBinding *binding = [Bin...
REST
15© FH AACHEN | Sebastian Meßingfeld
Webservices
REST – Alle nutzen REST
16© FH AACHEN | Sebastian Meßingfeld
Webservices
REST
17© FH AACHEN | Sebastian Meßingfeld
•  Keine native Unterstützung in Coacoa Touch
•  Interaktion durch d...
Webservices
REST – RestKit
18© FH AACHEN | Sebastian Meßingfeld
•  Objective-C Framework für iOS zur Interaktion
mit RESTf...
Webservices
REST – Request und Mapping
19© FH AACHEN | Sebastian Meßingfeld
NSURL *baseUrl = [NSURL URLWithString:@"http:/...
Fazit
20© FH AACHEN | Sebastian Meßingfeld
Webservices
Fazit für iOS
21© FH AACHEN | Sebastian Meßingfeld
•  keine einheitlichen Standards bei WS vorhanden
•  bspw. ...
Demo
22© FH AACHEN | Sebastian Meßingfeld
Tools / Bibliotheken
•  SOAP / XML
•  SoapUI
•  http://www.soapui.org/
•  Oxygen XML Editor
•  WSDL SOAP Analysator
•  wsd...
FH Aachen
Fachbereich Elektrotechnik & Informationstechnik
Sebastian Meßingfeld
24© FH AACHEN | Sebastian Meßingfeld
Upcoming SlideShare
Loading in …5
×

Apple iOS - Webservices

859 views
669 views

Published on

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
859
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apple iOS - Webservices

  1. 1. iOS Webservices Sebastian Meßingfeld 06.06.2013 1© FH AACHEN | Sebastian Meßingfeld
  2. 2. Inhalt 2© FH AACHEN | Sebastian Meßingfeld •  Unterstützung von Webservices in iOS •  Allgemein •  SOAP •  REST •  Fazit •  Demo •  Tools
  3. 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. 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. 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. 6. Webservices Testen – SoapUI (Beispiel SOAP Abfrage) 6© FH AACHEN | Sebastian Meßingfeld
  7. 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. 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. 9. SOAP 9© FH AACHEN | Sebastian Meßingfeld
  10. 10. Webservices SOAP – Waaruuummmm? 10© FH AACHEN | Sebastian Meßingfeld
  11. 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. 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. 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. 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. 15. REST 15© FH AACHEN | Sebastian Meßingfeld
  16. 16. Webservices REST – Alle nutzen REST 16© FH AACHEN | Sebastian Meßingfeld
  17. 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. 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. 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. 20. Fazit 20© FH AACHEN | Sebastian Meßingfeld
  21. 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. 22. Demo 22© FH AACHEN | Sebastian Meßingfeld
  23. 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. 24. FH Aachen Fachbereich Elektrotechnik & Informationstechnik Sebastian Meßingfeld 24© FH AACHEN | Sebastian Meßingfeld

×