Un cliente mío me ha pedido que integre una API de terceros en su aplicación Rails. El único problema es que la API usa SOAP. Ruby básicamente ha abandonado SOAP a favor de REST. Proporcionan un adaptador Java que aparentemente funciona con el puente Java-Ruby, pero nos gustaría mantenerlo todo en Ruby, si es posible. Miré a soap4r, pero parece que tiene una mala reputación.
Entonces, ¿cuál es la mejor manera de integrar las llamadas SOAP en una aplicación Rails?
ruby-on-rails
ruby
soap
jcoby
fuente
fuente
Construí Savon de hacer interactuar con servicios web de SOAP a través de Rubí lo más fácil posible.
Te recomiendo que lo revises.
fuente
Cambiamos de Handsoap a Savon.
Aquí hay una serie de publicaciones de blog que comparan las dos bibliotecas cliente.
fuente
También recomiendo a Savon . Pasé demasiadas horas tratando de lidiar con Soap4R, sin resultados. Gran falta de funcionalidad, no hay documentación.
Savon es la respuesta para mí.
fuente
Prueba SOAP4R
Y acabo de enterarme de esto en el podcast de Rails Envy (ep 31):
fuente
Acabo de hacer que mis cosas funcionen en 3 horas con Savon.
La documentación de Introducción en la página de inicio de Savon fue realmente fácil de seguir, y en realidad coincidía con lo que estaba viendo (no siempre es el caso)
fuente
Kent Sibilev de Datanoise también había portado la biblioteca Rails ActionWebService a Rails 2.1 (y superior). Esto le permite exponer sus propios servicios SOAP basados en Ruby. Incluso tiene un modo de prueba / andamio que le permite probar sus servicios usando un navegador.
fuente
He usado SOAP en Ruby cuando tuve que hacer un servidor SOAP falso para mis pruebas de aceptación. No sé si esta fue la mejor manera de abordar el problema, pero funcionó para mí.
He usado la gema Sinatra (escribí sobre la creación de puntos finales simulados con Sinatra aquí ) para el servidor y también Nokogiri para XML (SOAP está trabajando con XML).
Entonces, para el principio, he creado dos archivos (por ejemplo, config.rb y answers.rb) en los que he puesto las respuestas predefinidas que devolverá el servidor SOAP. En config.rb he puesto el archivo WSDL, pero como una cadena.
En answers.rb he puesto ejemplos de respuestas que el servidor SOAP devolverá para diferentes escenarios.
Así que ahora déjame mostrarte cómo he creado realmente el servidor.
¡Espero que le resulte útil!
fuente
Estaba teniendo el mismo problema, cambié a Savon y luego lo probé en un WSDL abierto (usé http://www.webservicex.net/geoipservice.asmx?WSDL ) y hasta ahora todo bien.
https://github.com/savonrb/savon
fuente
He usado una llamada HTTP como a continuación para llamar a un método SOAP,
Espero eso ayude. Salud.
fuente