ruby-on-rails – 使用Rails 3实现SOAP 1.2服务器

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用Rails 3实现SOAP 1.2服务器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
肥皂?你为什么用这个

我正在使用Ruby Enterprise Edition和Rails 3编写我的Web应用程序.该应用程序使用Ustream的Watershed白标广告服务为我的用户提供直播.不幸的是,我在开发过程中遇到了困扰.流域允许应用程序通过在应用程序端实现SOAP服务来提供自己的身份验证层.此认证层必须在SOAP 1.2中实现,以便与Watershed配合使用.令我非常失望的是,Ruby社区似乎已经将SOAP转变为充满REST和独角兽的更美好的未来.

这让我快乐了99.9%的时间.但是现在我需要在我的闪亮的新的Rails 3应用程序中创建SOAP 1.2端点.

如果有任何人可以使用任何建议或图书馆,我将非常感激.

我已经做的事情

尝试在Ruby中内置的SOAP支持.不幸的是,它似乎不支持SOAP 1.2.
>看看WSO2,但不想在我的服务器上构建一个广泛的Ruby扩展,只是为了支持SOAP.
>在考虑我是一个懒惰的程序员之前,先考虑一下硬编码xml响应.

解决方法

自从Q发布以来已经有一段时间了,但是呢,SOAP并没有超速.我想你已经实施了一些东西,要分享

无论如何,作为一种答案,我得到了一个客户的祝福,强迫我消费他的SOAP服务(他们的令人敬畏的SOA平台不支持其他格式…),用于拉和推数据.我只是消费,因为我为别人提供了好的干净的RESTful Web服务.我一直在使用savon(法语为肥皂?),取得了巨大的成功

http://savonrb.com

如果您真的很懒惰,那么您将对SOAP信封结构进行硬编码并输入动态数据.这是一个简单的例子.

def soap_envelope(pCode)
  "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:prod='http://xmlns.aBigCompany.com/path/to/NeededService'>
     <soapenv:Header/>
     <soapenv:Body>
        <something:NeededServiceRequest>
           <something:productCode>#{pCode}</something:productCode>
        </something:NeededServiceRequest>
     </soapenv:Body>
  </soapenv:Envelope>"
end

这是一种使用它的方法

products_wsdl = Savon::Client.new "http://ipAtBigCo:xxxx/path/to/services/NeededService?wsdl"
begin
  response = products_wsdl.process! do |soap| 
    soap.xml = soap_envelope("someProductCode")
  end
rescue => e
  MyLogger.error "Error: SOAP call for code #{pCode} Failed. ++"
  raise e
end
response.to_hash # This is the nice part

关于SOAP 1.2,savon支持它.关于实际上是一个SOAP服务提供商,我没有在rails中做到这一点(打败它),只能祝你好运.自己开发愚蠢的WSDL是SOAP服务的真正痛苦.希望这有助于任何人.

猜你在找的Ruby相关文章