gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:41:12 25 4
gpt4 key购买 nike

SOAP ?为什么要使用它?

我正在使用 Ruby Enterprise Edition 和 Rails 3 编写我的 Web 应用程序。该应用程序使用 Ustream 的 Watershed 白标广播服务为我的用户提供直播。不幸的是,我在开发过程中遇到了障碍。 Watershed 允许应用程序通过在应用程序端实现 SOAP 服务来提供自己的身份验证层。此身份验证层必须在 SOAP 1.2 中实现才能与 Watershed 一起使用。令我非常沮丧的是,Ruby 社区似乎已经超越了古老的 SOAP,走向了充满 REST 和 unicorn 的更光明的 future 。

这让我在 99.9% 的时间里都很开心。但是,现在我需要在我崭新的 Rails 3 应用程序中创建一个 SOAP 1.2 端点。

如果有人有任何建议或库可供我使用,我将不胜感激。

我已经做过的事情

  • 试用了 Ruby 中的内置 SOAP 支持。不幸的是,它似乎不支持 SOAP 1.2。
  • 查看了 WSO2,但不想在我的服务器上构建大量的 Ruby 扩展来支持 SOAP。
  • 在决定我是一个懒惰的程序员之前考虑过硬编码 xml 响应。

最佳答案

这个问题发布已经有一段时间了,但是嘿,SOAP 也没有加速。我想你已经实现了一些东西,愿意分享吗?

无论如何,作为一种回答,我很幸运有一位客户强制我使用他的 SOAP 服务(他们很棒的 SOA 平台不支持其他格式...)来拉取和推送数据。我只消费,因为我自己为其他人提供了漂亮干净的 RESTful Web 服务。我一直在使用 savon(法语中的 SOAP ?)取得了巨大的成功

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-on-rails - 使用 Rails 3 实现 SOAP 1.2 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com