Wie SOAP-und REST-arbeiten mit XML - /JSON-Antwort?
Dies ist eine sehr Häufig gestellte Frage wieder und wieder auf stack overflow und ich lese so viele Antworten, aber ich bin immer noch etwas verwirrt.
Brauche ich zum Aufruf des webservices aus dem iPhone sdk.
Hier sind meine Fragen:
-
Ich bin nicht klar, was die Antwort-SOAP-oder REST zurück.Gibt es etwas spezifisch, dass, wenn die Antwort ist das XML dann sollten wir nutzen, REST und wenn JSON-wir sollten Sie SEIFE verwenden?
-
Was ist die Rolle der ASIHTTP mit SOAP-und REST?
-
Wenn ich XML-Antwort als
<oproduct> <iid>113133791</iid> <icategoryid>270</icategoryid> <imerchantid>1547</imerchantid> <iadult>0</iadult> <sname>The Ashes /1st Test - England v Australia - Day 1</sname> <sawdeeplink>http://www.acbcd.com/pclick.php?p=113133791&a=111402&m=1547&platform=cs</sawdeeplink> <sawthumburl>http://images.abcdd.com/thumb/1547/113133791.jpg</sawthumburl> <fprice>69.99</fprice> </oproduct>
Muss ich analysieren, die von hand? oder wie gehe ich mit XML-Antwort?
Ich habe so viele Artikel über REST und SOAP, aber keine richtigen code um es zu verstehen.
Ich wäre dankbar für jede Hilfe in Bezug auf diese Fragen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
SOAP "Simple Object Access Protocol"
SEIFE ist ein Verfahren zum übertragen von Nachrichten, oder kleine Mengen von Informationen über das Internet. SOAP-Nachrichten sind in XML formatiert und werden in der Regel per HTTP (hypertext transfer protocol).
Also SEIFE hat einen standard, wie eine Nachricht gesendet werden soll.
Jede soap-web-service definiert werden können, mit einer WSDL(Web Service Definition Language), die eine Art schema für SOAP-XML übertragen.
Gibt es viele Werkzeuge zur Verfügung, um zu konvertieren WSDL(Ihre webservice-definition) in systemeigenen code.
Eines der verfügbaren Werkzeug für ObjC ist Sudz-C (http://sudzc.com/) verwandeln das WDSL von jedem webservice zu ObjC-code, um den Zugriff auf den Web service.
Rest - Representational state transfer
Rest ist eine einfache Weise des Sendens und Empfangens von Daten zwischen client und server und es müssen nicht alle viel-standards definiert haben , können Sie senden und empfangen von Daten als JSON,XML oder auch ein Text. Seine leicht gewichtet im Vergleich zu SOAP.
Handhaben Rest in iOS gibt es viele Werkzeuge zur Verfügung, würde ich empfehlen, RestKit http://restkit.org/, für das handling von XML und JSON beide.
Ich würde vorschlagen, Sie gehen mit dem Rest für die mobile Entwicklung, da Ihr geringes Gewicht
(Einfaches Beispiel, Menschen, die mich korrigieren, Wenn ich falsch bin)
Ok, so haben Sie ein paar verschiedene Fragen hier:
REST ist ein Weg, der Zugriff auf den web-service. SOAP ist eine alternative Möglichkeit für den Zugriff auf den web service. REST verwendet die Abfrage-string-oder URL-format in der Erwägung, dass SOAP verwendet XML. JSON und XML sind zwei verschiedene Möglichkeiten der Rücksendung der Daten. SOAP und XML sind in der Regel miteinander verknüpft. Für apps, REST/JSON ist in der Regel der Weg zu gehen. Einfacher zu implementieren und zu pflegen, weit mehr telegrafische, etc.
ASIHTTP, wie Bill von Notizen, ist ein wrapper. Es gibt andere Möglichkeiten, die ähnliche Dinge tun, je nachdem, was Sie brauchen. Wenn Sie die Verwendung von REST/JSON dann
NSURLConnection
+SBJSON
könnte den trick tun, ich mag es persönlich.Wenn Ihr SOAP-service hat eine verfügbare WSDL können Sie wsdl2objc automatisch erstellen Sie den code für Ihre Analyse und das abrufen. Wenn es ein JSON-service oder keine WSDL verfügbar ist, würde ich empfehlen, mit
SBJSON
und einfach die Analyse in folgender Weise:for (id jsonElement in response verwendet) {
selbst.propertyA = [jsonElement valueForKey:@"keyA"];
selbst.propertyB = [jsonElement valueForKey:@"keyB"];
}
Hoffe, das hilft!
1) SOAP-Antworten muss XML sein, und wieder andere Formate müssen Sie entweder Einbettung in die XML-Antwort (ineffizient) oder der Verwendung von SOAP attachments (schwierig). SOAP-Antworten enthalten sind, die in einem soap-envelope-tag, und es ist in der Regel eine zugehörige wsdl. Wenn die XML-Sie zeigen alles, was Sie bekommen, dann kann es nicht sein, ein SOAP-service. Ich sehe links in der XML so, dass ist ein gutes Zeichen, dass Sie hatten RUHE im Geist.
2) ich habe nicht gehört, der ASIHTTP. Eine schnelle google, und es sieht aus wie seine eine Drittanbieter-Bibliothek, die umschließt die http-Schnittstellen in iOS. Es sieht aus wie Sie verwenden würden, die Ihnen dabei helfen, die http-Anfragen, obwohl ich würde vorschlagen, dass es vielleicht nicht nötig; Sie sollten bewerten, mit der http-Bibliotheken direkt.
3) Sie müssen analysiert werden, irgendwie. Sie können es von hand machen, aber das ist generell eine ganz schlechte Idee. XML kann in vielen Formen kommen und haben immer noch die gleiche Bedeutung, und wenn Sie nicht unterstützen alle Formen Ihrer Anwendung brechen könnte in der Zukunft, wenn der web-service-provider fing an, Ihre XML-format anders, auch wenn seine Semantik waren die gleichen. Verwenden Sie eine XML-api zum Lesen von XML. Die DOM-api liest es in einem Baum-form für Sie, und Sie XPath verwenden können, um Informationen zu extrahieren aus dem Baum.
(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)atributeDict { if ([elementName isEqualToString:@"NoOfObjectsDetected"]) { noOfObjetcsArray =[nsmutablearray alloc] initwithcapacity:0]; elementNameStr = elementName; } }
Methode