27 Stimmen

Wie kann ich das iPhone mit einem Webdienst verbinden und XML-Daten abrufen?

Ich weiß, wie man mit einem iPhone eine Verbindung zum Webserver herstellt, aber jetzt muss ich das iPhone mit einem Webdienst verbinden. Ich weiß nicht, wie man das macht, und es gibt online keine Demo oder einen Kurs.

Hat jemand eine Idee?

1 Stimmen

Der Link, den amrox zur Verfügung stellt, SOAP-Webdienste beantwortet alle Fragen, die Sie gestellt haben.

0 Stimmen

@vavdiya: Können Sie mir sagen, wie man eine Verbindung zu einem Webserver herstellt, um eine API abzurufen?

1 Stimmen

20voto

amrox Punkte 6157

Vielleicht finden Sie dieses Tutorial mit dem Titel Intro to SOAP-Webdienste nützlich. Er zeigt, wie man eine Anfrage verpackt, sie an einen Webdienst sendet und die Antwort liest.

Wenn Sie Hilfe beim Parsen von XML benötigen, gibt es die TouchXML Bibliothek, die Ihnen ein schönes XML-"Dokument" zur Verfügung stellt, mit dem Sie arbeiten können. Seien Sie nur vorsichtig mit der Speichernutzung.

Wenn Sie eine große XML-Nachricht parsen müssen, ist dies Tutorium über libxml und xmlreader in Cocoa wird Ihnen zeigen, wie Sie XML mit den Parsern der unteren Ebenen parsen können, die den Ereignissen entsprechen.

16voto

Ich habe eine Open-Source-Anwendung für iPhone OS 3.0 erstellt, die zeigt, wie man REST- und SOAP-Dienste in einer iPhone-Anwendung nutzt. Dabei kommen XML (mit 8 verschiedenen iPhone-Bibliotheken), SOAP, JSON (mit SBJSON und TouchJSON), YAML, Protocol Buffers (Google-Serialisierungsformat) und sogar CSV aus einer PHP-Beispielanwendung (im Projekt enthalten) zum Einsatz.

http://github.com/akosma/iPhoneWebServicesClient

Das Projekt ist modular genug, um in Zukunft viele andere Formate und Bibliotheken zu unterstützen.

Die folgende SlideShare-Präsentation zeigt meine Ergebnisse in Bezug auf Leistung, einfache Implementierung und Nutzlastmerkmale:

http://www.slideshare.net/akosma/web-services-3439269

12voto

Geraud.ch Punkte 1489

Sie können diese 2 Zeilen verwenden, die die Antwort auf Ihre HTTP-Anfrage zurückgeben. Sie brauchen keine Konfiguration. Dieser Code ist nützlich, wenn Sie z.B. versuchen, auf einen PHP-Skript zuzugreifen. Danach müssen Sie das Ergebnis nur noch parsen.

NSURL *URL=[[NSURL alloc] initWithString:stringForURL];
NSString *results = [[NSString alloc] initWithContentsOfURL :URL];

2 Stimmen

Solange das Skript schnell zurückkehrt, denn dieser Code erzeugt eine synchrone Anfrage, die den aktuellen Thread blockiert (der der UI-Thread sein könnte, und das ist eine wirklich schlechte Idee). Verwenden Sie asynchrone Verbindungen, wann immer Sie können. akos.ma/_pp0

0 Stimmen

Wie Adrian Kosmaczewski erwähnt, erzeugt dieser Code einen blockierenden Aufruf, der Ihre Anwendung effektiv blockiert. Verwenden Sie auf jeden Fall asynchrone Aufrufe, wenn Sie können.

0 Stimmen

Und was ist mit dotnet web service?

3voto

Guido Punkte 44293

Meiner Meinung nach haben Sie zwei Möglichkeiten:

  • Verwenden Sie eine Bibliothek eines Drittanbieters. Sie können versuchen wsdl2objc . Bei mir hat es nicht funktioniert, aber es wird aktiv weiterentwickelt, so dass es jeden Tag besser wird.
  • Verwenden Sie eine rohe HTTP-Verbindung und verarbeiten Sie jede Anfrage/Antwort. Dies ist der Weg, den ich verfolgt habe. Es ist schwer, so würde ich auch gerne einen besseren Ansatz kennen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X