Suche senden
Hochladen
Apple iOS - Webservices
•
0 gefällt mir
•
1,183 views
M
messeb
Folgen
Webservice-Anbindung (SOAP / REST) unter Apple iOS
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 24
Empfohlen
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Kommunikations-APIs von JavaScript (International PHP Conference/WebTechCon 2...
Christian Wenz
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Jonathan Weiss
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für Webanwendungen
Marco Rico Gomez
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
Florian Holzhauer
Skalieren einer Web Anwendung
Skalieren einer Web Anwendung
Jonathan Weiss
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
OPEN KNOWLEDGE GmbH
Skalieren von WordPress & WooCommerce
Skalieren von WordPress & WooCommerce
Robert Windisch
Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex
Jan Gehring
Weitere ähnliche Inhalte
Was ist angesagt?
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
NETWAYS
Infra coders meetup
Infra coders meetup
Aleksandar Lazic
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
Jan Gehring
HTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
Mayflower GmbH
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
NETWAYS
Rex - Infrastruktur als Code
Rex - Infrastruktur als Code
Jan Gehring
Inside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddler
Max Nowack
Intro to scaling Databases
Intro to scaling Databases
Heiko Seebach
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
Ulrich Krause
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
NETWAYS
Hypermedia APIs mit Javascript und Python
Hypermedia APIs mit Javascript und Python
Timo Stollenwerk
Raspberry PI 4 Freifunk Offloader
Raspberry PI 4 Freifunk Offloader
Annika Wickert
Performance durch Caching
Performance durch Caching
AOE
Softwarearchitektur eines modernen Onlinespieles - PHPUnconference 2013
Softwarearchitektur eines modernen Onlinespieles - PHPUnconference 2013
Tobias Rojahn
Was ist angesagt?
(14)
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
Infra coders meetup
Infra coders meetup
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
HTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Rex - Infrastruktur als Code
Rex - Infrastruktur als Code
Inside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddler
Intro to scaling Databases
Intro to scaling Databases
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Foreman: Klassen und Parametrisierung in Puppet (Webinar vom 20. Mai 2016)
Hypermedia APIs mit Javascript und Python
Hypermedia APIs mit Javascript und Python
Raspberry PI 4 Freifunk Offloader
Raspberry PI 4 Freifunk Offloader
Performance durch Caching
Performance durch Caching
Softwarearchitektur eines modernen Onlinespieles - PHPUnconference 2013
Softwarearchitektur eines modernen Onlinespieles - PHPUnconference 2013
Ähnlich wie Apple iOS - Webservices
Ist GraphQL das bessere REST
Ist GraphQL das bessere REST
Martin Abraham
FMK2017 - REST mobil- die andere Serververbindung by Volker Krambrich
FMK2017 - REST mobil- die andere Serververbindung by Volker Krambrich
Verein FM Konferenz
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
Daniel Fisher
Api services
Api services
Jan Hentschel
Web-API Design in Java
Web-API Design in Java
OPEN KNOWLEDGE GmbH
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Peter Kirchner
Microservices mit Rust
Microservices mit Rust
Jens Siebert
Backend-Services mit Rust
Backend-Services mit Rust
Jens Siebert
Was kommt nach den SPAs
Was kommt nach den SPAs
QAware GmbH
REST mit APEX 18.1
REST mit APEX 18.1
Oliver Lemm
PrettyFaces: RESTful URLs für JSF
PrettyFaces: RESTful URLs für JSF
Christian Kaltepoth
Web-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/Response
OPEN KNOWLEDGE GmbH
AngularJS für .NET-Entwickler
AngularJS für .NET-Entwickler
Peter Hecker
Schnittstellen und Webservices
Schnittstellen und Webservices
Jakob .
WebAPIs mit ASP.NET MVC 6
WebAPIs mit ASP.NET MVC 6
Manfred Steyer
Webapplikationen mit Node.js
Webapplikationen mit Node.js
Sebastian Springer
PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021
SEARCH ONE
Internet Information Services (deutsch)
Internet Information Services (deutsch)
Joerg Krause
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Icinga
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
Matthias Jauernig
Ähnlich wie Apple iOS - Webservices
(20)
Ist GraphQL das bessere REST
Ist GraphQL das bessere REST
FMK2017 - REST mobil- die andere Serververbindung by Volker Krambrich
FMK2017 - REST mobil- die andere Serververbindung by Volker Krambrich
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
Api services
Api services
Web-API Design in Java
Web-API Design in Java
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Microservices mit Rust
Microservices mit Rust
Backend-Services mit Rust
Backend-Services mit Rust
Was kommt nach den SPAs
Was kommt nach den SPAs
REST mit APEX 18.1
REST mit APEX 18.1
PrettyFaces: RESTful URLs für JSF
PrettyFaces: RESTful URLs für JSF
Web-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/Response
AngularJS für .NET-Entwickler
AngularJS für .NET-Entwickler
Schnittstellen und Webservices
Schnittstellen und Webservices
WebAPIs mit ASP.NET MVC 6
WebAPIs mit ASP.NET MVC 6
Webapplikationen mit Node.js
Webapplikationen mit Node.js
PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021
Internet Information Services (deutsch)
Internet Information Services (deutsch)
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
Apple iOS - Webservices
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