Un de mes clients m'a demandé d'intégrer une API tierce dans leur application Rails. Le seul problème est que l'API utilise SOAP. Ruby a essentiellement abandonné SOAP en faveur de REST. Ils fournissent un adaptateur Java qui fonctionne apparemment avec le pont Java-Ruby, mais nous aimerions tout garder dans Ruby, si possible. J'ai regardé dans soap4r, mais il semble avoir une légère mauvaise réputation.
Alors, quelle est la meilleure façon d'intégrer les appels SOAP dans une application Rails?
ruby-on-rails
ruby
soap
jcoby
la source
la source
J'ai créé Savon pour rendre l'interaction avec les services Web SOAP via Ruby aussi simple que possible.
Je vous recommande de le vérifier.
la source
Nous sommes passés de Handsoap à Savon.
Voici une série d'articles de blog comparant les deux bibliothèques clientes.
la source
Je recommande également Savon . J'ai passé trop d'heures à essayer de gérer Soap4R, sans résultat. Gros manque de fonctionnalité, pas de doc.
Savon est la réponse pour moi.
la source
Essayez SOAP4R
Et je viens d'en entendre parler sur le podcast Rails Envy (ep 31):
la source
Je viens de faire fonctionner mes affaires dans les 3 heures avec Savon.
La documentation de mise en route sur la page d'accueil de Savon était vraiment facile à suivre - et correspondait en fait à ce que je voyais (pas toujours le cas)
la source
Kent Sibilev de Datanoise avait également porté la bibliothèque Rails ActionWebService vers Rails 2.1 (et supérieur). Cela vous permet d'exposer vos propres services SOAP basés sur Ruby. Il dispose même d'un mode échafaudage / test qui vous permet de tester vos services à l'aide d'un navigateur.
la source
J'ai utilisé SOAP dans Ruby lorsque j'ai dû créer un faux serveur SOAP pour mes tests d'acceptation. Je ne sais pas si c'était la meilleure façon d'aborder le problème, mais cela a fonctionné pour moi.
J'ai utilisé Sinatra gem (j'ai écrit sur la création de points de terminaison moqueurs avec Sinatra ici ) pour le serveur et aussi Nokogiri pour les trucs XML (SOAP fonctionne avec XML).
Donc, pour le début j'ai créé deux fichiers (par exemple config.rb et answers.rb) dans lesquels j'ai mis les réponses prédéfinies que le serveur SOAP renverra. Dans config.rb, j'ai mis le fichier WSDL, mais sous forme de chaîne.
Dans answers.rb, j'ai mis des exemples de réponses que le serveur SOAP retournera pour différents scénarios.
Alors maintenant, laissez-moi vous montrer comment j'ai créé le serveur.
J'espère que vous trouverez cela utile!
la source
J'avais le même problème, je suis passé à Savon et je l'ai juste testé sur un WSDL ouvert (j'ai utilisé http://www.webservicex.net/geoipservice.asmx?WSDL ) et jusqu'à présent tout va bien!
https://github.com/savonrb/savon
la source
J'ai utilisé un appel HTTP comme ci-dessous pour appeler une méthode SOAP,
J'espère que ça aide. À votre santé.
la source