Ein Kunde von mir hat mich gebeten, eine Drittanbieter-API in seine Rails-App zu integrieren. Das einzige Problem ist, dass die API SOAP verwendet. Ruby hat SOAP grundsätzlich zugunsten von REST eingestellt. Sie bieten einen Java-Adapter, der anscheinend mit der Java-Ruby-Bridge funktioniert, aber wir möchten, wenn möglich, alles in Ruby behalten. Ich habe mich mit soap4r befasst, aber es scheint einen etwas schlechten Ruf zu haben.
Wie lassen sich SOAP-Aufrufe am besten in eine Rails-App integrieren?
quelle
Ich habe Savon entwickelt , um die Interaktion mit SOAP-Webservices über Ruby so einfach wie möglich zu gestalten.
Ich würde empfehlen, dass Sie es überprüfen.
quelle
Wir sind von Handsoap zu Savon gewechselt.
Hier ist eine Reihe von Blog-Posts, in denen die beiden Client-Bibliotheken verglichen werden.
quelle
Ich empfehle auch Savon . Ich habe zu viele Stunden damit verbracht, mit Soap4R umzugehen, ohne Ergebnisse. Großer Mangel an Funktionalität, kein Dokument.
Savon ist die Antwort für mich.
quelle
Versuchen Sie SOAP4R
Und davon habe ich gerade im Rails Envy Podcast (Folge 31) gehört:
quelle
Ich habe gerade meine Sachen innerhalb von 3 Stunden mit Savon zum Laufen gebracht.
Die Dokumentation "Erste Schritte" auf Savons Homepage war wirklich einfach zu befolgen - und stimmte tatsächlich mit dem überein, was ich sah (nicht immer der Fall).
quelle
Kent Sibilev von Datanoise hatte auch die Rails ActionWebService-Bibliothek auf Rails 2.1 (und höher) portiert. Auf diese Weise können Sie Ihre eigenen Ruby-basierten SOAP-Dienste verfügbar machen. Er hat sogar einen Gerüst- / Testmodus, mit dem Sie Ihre Dienste mit einem Browser testen können.
quelle
Ich habe SOAP in Ruby verwendet, als ich für meine Abnahmetests einen gefälschten SOAP-Server erstellen musste. Ich weiß nicht, ob dies der beste Weg war, um das Problem anzugehen, aber es hat bei mir funktioniert.
Ich habe Sinatra Juwel verwendet (Ich schrieb über spöttischen Schaffung Endpunkte mit Sinatra hier ) für Server und auch Nokogiri für XML Material (SOAP ist die Arbeit mit XML).
Daher habe ich zu Beginn zwei Dateien erstellt (z. B. config.rb und answers.rb), in die ich die vordefinierten Antworten eingefügt habe, die der SOAP-Server zurückgeben wird. In config.rb habe ich die WSDL-Datei aber als String abgelegt.
In answers.rb habe ich Beispiele für Antworten eingefügt, die der SOAP-Server für verschiedene Szenarien zurückgibt.
Lassen Sie mich Ihnen nun zeigen, wie ich den Server tatsächlich erstellt habe.
Ich hoffe, Sie finden das hilfreich!
quelle
Ich hatte das gleiche Problem, wechselte zu Savon und testete es dann einfach auf einer offenen WSDL (ich habe http://www.webservicex.net/geoipservice.asmx?WSDL verwendet ) und soweit so gut!
https://github.com/savonrb/savon
quelle
Ich habe einen HTTP-Aufruf wie unten verwendet, um eine SOAP-Methode aufzurufen.
Ich hoffe es hilft. Prost.
quelle