Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用Rails 3实现SOAP 1.2服务器 肥皂?你为什么要用这个?_Ruby On Rails_Xml_Ruby_Soap_Wsdl - Fatal编程技术网

Ruby on rails 用Rails 3实现SOAP 1.2服务器 肥皂?你为什么要用这个?

Ruby on rails 用Rails 3实现SOAP 1.2服务器 肥皂?你为什么要用这个?,ruby-on-rails,xml,ruby,soap,wsdl,Ruby On Rails,Xml,Ruby,Soap,Wsdl,我正在使用Ruby Enterprise Edition和Rails 3编写我的web应用程序。该应用程序使用Ustream的分水岭白标广播服务为我的用户提供实时流媒体。不幸的是,我在开发过程中遇到了一个障碍。流域允许应用程序通过在应用程序端实现SOAP服务来提供自己的身份验证层。此身份验证层必须在SOAP 1.2中实现,才能使用Waterwater。令我非常沮丧的是,Ruby社区似乎已经超越了古老的SOAP,走向了一个充满休息和独角兽的光明未来 这让我99.9%的时间都很开心。然而,现在我需要

我正在使用Ruby Enterprise Edition和Rails 3编写我的web应用程序。该应用程序使用Ustream的分水岭白标广播服务为我的用户提供实时流媒体。不幸的是,我在开发过程中遇到了一个障碍。流域允许应用程序通过在应用程序端实现SOAP服务来提供自己的身份验证层。此身份验证层必须在SOAP 1.2中实现,才能使用Waterwater。令我非常沮丧的是,Ruby社区似乎已经超越了古老的SOAP,走向了一个充满休息和独角兽的光明未来

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

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

我已经做过的事情
  • 尝试了Ruby中的内置SOAP支持。不幸的是,它似乎不支持SOAP1.2
  • 查看了WSO2,但不想在我的服务器上构建一组广泛的Ruby扩展来支持SOAP
  • 在决定我是一个懒惰的程序员之前,先考虑硬编码xml响应

你可能会在这里找到你想要的东西

这个Q发布已经有一段时间了,但是嘿,SOAP也没有加速。我想你已经实现了一些东西,想和大家分享一下吗

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

如果您真的很懒,您将硬编码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

关于SOAP 1.2,savon支持它。关于实际上是一个SOAP服务提供商,我还没有在rails中做到这一点(与之抗争!),我只能祝你好运。必须自己开发愚蠢的wsdl才是SOAP服务的真正痛苦。希望这对任何人都有帮助。

如果您无法避免Rails 3中的SOAP,请尝试清洗gem。您可以在以下网址找到:

我们在我们的系统中使用了。它不是傻瓜式的,并且仍在经历一些变化,至少你会开始


尽管Rails 3已经停止支持SOAP,但它可以帮助您更快地开始创建SOAP Web服务。任何感兴趣的人都应该看看github上的wash_out wiki。在我们的例子中,客户希望一个SOAP Web服务被公开;我们试着走剩下的路。最后,我们不得不对SOAP说“是”。我试过aws、soap4r,但结果证明wash_是最合适的。

您可以将此gem用于soap实现


谢谢你的回答。据我所知,AWS不支持1.2,也不支持Rails 3(目前)。如果我错了,请告诉我。我也有同样的问题。我被要求实现一个soapwebservice,我希望将它添加到公司的mainrails应用程序中,但还没有成功。我可能会用PHP编写:|让我知道你决定使用什么。:)谢谢你的回答(莫顿)我看了Savon,但它是一个客户,因此不能帮助我。幸运的是,我已经离开了那个项目,最终根本不需要实现soap端点。感谢您分享“硬编码SOAP”结构,因为我认为对于试图做我正在做的事情的人来说,这可能是他们最好的选择~_~
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