Car*_*rre 12 ruby xml soap wsdl ruby-on-rails
我正在使用Ruby Enterprise Edition和Rails 3来编写我的Web应用程序.该应用程序使用Ustream的Watershed白标广播服务为我的用户提供实时流媒体.不幸的是,我在开发期间遇到了障碍.Watershed允许应用程序通过在应用程序端实现SOAP服务来提供自己的身份验证层.必须在SOAP 1.2中实现此身份验证层才能与Watershed一起使用.令我非常沮丧的是,似乎Ruby社区已经过去了,因为SOAP已经过了一个充满REST和Unicorns的更光明的未来.
这让我很高兴99.9%的时间.但是现在我需要在我的闪亮的新Rails 3应用程序中创建一个SOAP 1.2端点.
如果有人有我可以使用的任何建议或图书馆,我将非常感激.
自从发布这个 Q 已经有一段时间了,但是嘿,SOAP 也没有加速。我想你已经实现了一些东西,愿意分享吗?
无论如何,作为一种答案,我很幸运有一个客户强迫我使用他的 SOAP 服务(他们很棒的 SOA 平台不支持其他格式......)用于拉取和推送数据。我只消费,因为我自己为其他人提供了漂亮和干净的 RESTful Web 服务。我一直在使用 savon(法国肥皂?)取得了巨大成功
如果您真的很懒惰,您将对 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
Run Code Online (Sandbox Code Playgroud)
这是使用它的一种方式
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
Run Code Online (Sandbox Code Playgroud)
关于 SOAP 1.2,savon 支持它。关于实际上是一个 SOAP 服务提供者,我还没有在 Rails 中做过(打它!),只能祝你好运。必须自己开发愚蠢的 WSDL 才是使用 SOAP 服务的真正痛苦。希望这可以帮助任何人。
| 归档时间: |
|
| 查看次数: |
4657 次 |
| 最近记录: |