Um cliente meu me pediu para integrar uma API de terceiros em seu aplicativo Rails. O único problema é que a API usa SOAP. Ruby basicamente abandonou o SOAP em favor do REST. Eles fornecem um adaptador Java que aparentemente funciona com a ponte Java-Ruby, mas gostaríamos de manter tudo em Ruby, se possível. Eu pesquisei o soap4r, mas parece ter uma reputação um pouco ruim.
Então, qual é a melhor maneira de integrar chamadas SOAP em um aplicativo Rails?
ruby-on-rails
ruby
soap
Jcoby
fonte
fonte
Eu construí Savon de fazer interagir com webservices SOAP de via Rubi o mais fácil possível.
Eu recomendo que você dê uma olhada.
fonte
Mudamos de Handsoap para Savon.
Aqui está uma série de postagens de blog comparando as duas bibliotecas cliente.
fonte
Eu também recomendo Savon . Passei muitas horas tentando lidar com Soap4R, sem resultados. Grande falta de funcionalidade, sem doc.
Savon é a resposta para mim.
fonte
Experimentar SOAP4R
E acabei de ouvir sobre isso no Rails Envy Podcast (ep 31):
fonte
Acabei de fazer meu material funcionar em 3 horas usando o Savon.
A documentação de primeiros passos na página inicial de Savon foi realmente fácil de seguir - e realmente correspondeu ao que eu estava vendo (nem sempre é o caso)
fonte
Kent Sibilev da Datanoise também portou a biblioteca Rails ActionWebService para Rails 2.1 (e acima). Isso permite que você exponha seus próprios serviços SOAP baseados em Ruby. Ele ainda tem um modo de cadafalso / teste que permite que você teste seus serviços usando um navegador.
fonte
Eu usei SOAP em Ruby quando tive que fazer um servidor SOAP falso para meus testes de aceitação. Não sei se essa foi a melhor maneira de abordar o problema, mas funcionou para mim.
Eu usei o Sinatra gem (eu escrevi sobre a criação de pontos de extremidade mocking com Sinatra aqui ) para servidor e também Nokogiri para coisas XML (SOAP está trabalhando com XML).
Portanto, para o início, criei dois arquivos (por exemplo, config.rb e responses.rb) nos quais coloquei as respostas predefinidas que o servidor SOAP retornará. Em config.rb coloquei o arquivo WSDL, mas como uma string.
Em responses.rb , coloquei exemplos de respostas que o servidor SOAP retornará para diferentes cenários.
Agora, deixe-me mostrar como realmente criei o servidor.
Espero que você ache isso útil!
fonte
Eu estava tendo o mesmo problema, mudei para o Savon e depois testei em um WSDL aberto (usei http://www.webservicex.net/geoipservice.asmx?WSDL ) e até agora tudo bem!
https://github.com/savonrb/savon
fonte
Usei uma chamada HTTP como a seguir para chamar um método SOAP,
Espero que ajude. Felicidades.
fonte