加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:38:53 所属栏目:百科 来源:网络整理
导读:肥皂?你为什么用这个 我正在使用Ruby Enterprise Edition和Rails 3编写我的Web应用程序.该应用程序使用Ustream的Watershed白标广告服务为我的用户提供直播.不幸的是,我在开发过程中遇到了困扰.流域允许应用程序通过在应用程序端实现SOAP服务来提供自己的身
肥皂?你为什么用这个

我正在使用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服务的真正痛苦.希望这有助于任何人.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读