Wie funktionieren SOAP und REST mit XML / JSON-Antwort?

8

Dies ist eine sehr häufige Frage, die immer wieder beim Stack-Überlauf gestellt wird und ich lese so viele Antworten dazu, aber ich bin immer noch etwas verwirrt.

Ich muss die Webservices von iPhone sdk aufrufen.

Hier sind meine Fragen:

  1. Ich weiß nicht, welche Antwort SOAP oder REST zurückgibt. Gibt es etwas Bestimmtes, dass, wenn Antwort XML ist, wir REST verwenden sollten und wenn JSON wir SOAP verwenden sollten?

  2. Welche Rolle spielt ASIHTTP mit SOAP und REST?

  3. Wenn ich XML-Antwort als

  4. bekomme
%Vor%

Muss ich es mit der Hand analysieren? oder wie handhabe ich XML-Antwort?

Ich habe so viele Artikel über REST und SOAP, aber keinen richtigen Code, um es zu verstehen. Ich wäre dankbar für jede Hilfe in diesen Fragen.

    
Heena 22.12.2011, 05:39
quelle

3 Antworten

72

SOAP - "Simple Object Access Protocol"

SOAP ist eine Methode, um Nachrichten oder kleine Mengen von Informationen über das Internet zu übertragen. SOAP-Nachrichten sind in XML formatiert und werden in der Regel über HTTP (Hypertext Transfer Protocol) gesendet.

So hat SOAP einen Standard, wie eine Nachricht gesendet werden muss.

Jeder Soap-Web-Service kann mit einer WSDL (Web Service Definition Language) definiert werden, die eine Art Schema für die SOAP-XML-Übertragung darstellt.

Es gibt viele Tools, um WSDL (Ihre Webservice-Definition) in nativen Code zu konvertieren.

Eines der für ObjC verfügbaren Tools ist Sudz-C ( Ссылка ) , das die WDSL eines beliebigen Webdienstes konvertiert ObjC-Code für den Zugriff auf den Web-Service.

Rest - Representational state transfer

Rest ist eine einfache Methode zum Senden und Empfangen von Daten zwischen Client und Server und es sind nicht viele Standards definiert. Sie können Daten als JSON, XML oder sogar als Text senden und empfangen. Sein Licht gewichtet im Vergleich zu SOAP.

Um Rest in iOS zu behandeln, gibt es viele Tools, ich würde RestKit Ссылка empfehlen, um XML und JSON beide.

Ich würde Ihnen empfehlen, mit Rest für mobile Entwicklung zu gehen, da es leicht ist

(Einfaches Beispiel, Leute korrigieren mich Wenn ich falsch liege)

    
Nakkeeran 22.12.2011, 06:56
quelle
5

Ok, also haben Sie hier ein paar verschiedene Fragen:

  1. REST ist eine Möglichkeit, auf den Webservice zuzugreifen . SOAP ist eine alternative Möglichkeit, auf den Web-Service zuzugreifen. REST verwendet Abfragezeichenfolge oder URL-Format, während SOAP XML verwendet. JSON und XML sind zwei verschiedene Möglichkeiten, Daten zurückzusenden. SOAP und XML sind normalerweise miteinander verknüpft. Für mobile Apps ist REST / JSON normalerweise der richtige Weg. Einfacher zu implementieren und zu pflegen, weit telegrafischer, etc.

  2. ASIHTTP, wie Bill bemerkt, ist ein Wrapper. Es gibt andere Möglichkeiten, die ähnliche Dinge tun, je nachdem, was Sie brauchen. Wenn du REST / JSON verwendest, dann könnte NSURLConnection + SBJSON den Trick machen, ich mag es persönlich.

  3. Wenn Ihr SOAP-Dienst über eine verfügbare WSDL verfügt, können Sie mit wsdl2objc automatisch den Code für das Parsen und Abrufen erstellen. Wenn es sich um einen JSON-Dienst handelt oder keine WSDL verfügbar ist, würde ich empfehlen, SBJSON zu verwenden und einfach auf folgende Weise zu analysieren:

    für (id jsonElement in Antwort) {         self.propertyA = [jsonElement valueForKey: @ "keyA"];         self.propertyB = [jsonElement valueForKey: @ "keyB"]; }

Hoffe das hilft!

    
tacos_tacos_tacos 22.12.2011 06:14
quelle
1

1) SOAP-Antworten müssen XML sein, und um andere Formate zurückzugeben, müssen Sie sie entweder in die Antwort-XML einbetten (ineffizient) oder SOAP-Anhänge verwenden (schwierig). SOAP-Antworten sind in einem Soap-Envelope-Tag enthalten, und normalerweise ist ein wsdl zugeordnet. Wenn der von Ihnen angezeigte XML-Code der einzige ist, den Sie erhalten, handelt es sich möglicherweise nicht um einen SOAP-Service. Ich sehe Links in der XML, das ist ein gutes Zeichen, dass sie REST im Sinn hatten.

2) Ich habe noch nichts von ASIHTTP gehört. Eine schnelle Google, und es sieht aus wie eine Drittanbieter-Bibliothek, die die http-Schnittstellen in iOS umschließt. Es sieht so aus, als würdest du das verwenden, um dir die http-Anfragen zu stellen, obwohl ich vorschlagen würde, dass es nicht notwendig sein könnte; Sie sollten die HTTP-Bibliotheken direkt auswerten.

3) Sie müssen es irgendwie analysieren. Sie können es mit der Hand machen, aber das ist im Allgemeinen eine wirklich schlechte Idee. XML kann in vielen Formen vorkommen und hat immer noch die gleiche Bedeutung. Wenn Sie nicht alle Formulare unterstützen, kann Ihre Anwendung in Zukunft brechen, wenn der Web-Service-Provider seine XML-Datei anders formatiert, auch wenn die Semantik identisch ist. Sie würden eine XML-API verwenden, um das XML zu lesen. Das DOM api liest es für Sie in ein Baumformular und Sie können XPath verwenden, um Informationen aus dem Baum zu extrahieren.

    
Bill 22.12.2011 05:51
quelle

Tags und Links