在Ruby 1.9.2中使用SOAP和其他标准库 [英] Using SOAP and other Standard Libraries in Ruby 1.9.2

查看:77
本文介绍了在Ruby 1.9.2中使用SOAP和其他标准库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我最近升级到1.9.2 Ruby,一直使用1.8.7(我想试用Rails 3).

So, I recently upgraded to 1.9.2 Ruby, having used 1.8.7 for forever (I wanted to try out Rails 3).

我遇到的最大问题是我的SOAP require语句都没有起作用...我有类似的东西:

The BIGGEST problem I'm having is that none of my SOAP require statements are working...I have things like:

 require 'soap/rpc/driver'
 require 'xsd/qname'
 require 'soap/wsdlDriver'
 require 'ftools'

甚至ftools都无法正常工作,但是我想(看一下Ruby的源代码)它变成了'fileutils'吗?但是我没有看到与SOAP类似的东西.....它刚刚被删除了吗?

Even ftools isn't working, but I THINK (look at the Ruby source) that this became 'fileutils'? But I don't see anything similar for SOAP.....has it just been removed?

如果是这样,该怎么办?是否有任何插件在本质上做同样的事情?

If so...what should I do? Is there any plug ins that do essentially the same thing?

我的代码如下:

 require 'soap/wsdlDriver'
     def send_package
     adi_url = "ftp://anonymous:ads123@#{APP_CONFIG['pcms_ip']}/#{self.id}/original/ADI.XML" 


     cl0 = SOAP::WSDLDriverFactory.new(APP_CONFIG['corba_bridge'])
     driver = cl0.create_rpc_driver
     driver.streamhandler.client.receive_timeout = 10
     x = driver.exportPackage2(self.name+self.id.to_s, adi_url, "NS2.PackageFactory")
     log x

     if x.to_s =~ /ERROR/
          raise x.to_s
     end
 end

 require 'soap/rpc/driver'
 require 'xsd/qname'
 def get_self_offering_ids(wsdl, namespace)
      ret = []
      input = {"#{namespace}:includeAssetMetadata" => 'true'}

      begin
           driver = SOAP::RPC::Driver.new(wsdl, namespace)
           driver.add_document_method('GetAllOfferingsRequest', "OpenStreamVOD#getAllOfferings", XSD::QName.new(namespace, "GetAllOfferingsRequest"), XSD::QName.new(namespace, "GetAllOfferingsResponse"))
           result = driver.GetAllOfferingsRequest(input)
      rescue => err
               log err                        
      end

      if result
           result.offering.each do |o|
                if offeringIsSelf?(o)
                   ret << o.xmlattr_offeringId
                end
           end 
      end

      return ret
 end

我没有太多的肥皂经验...而且我什至不确定wsdlDriver和rpc/driver有什么不同...只是我当时有充分的理由使用两个单独的库?

I don't have much soap experience...and I'm not even sure how wsdlDriver and rpc/driver are any different...just that I probably had a good reason for using the two separate libraries at the time?

推荐答案

如果您想继续使用Ruby 1.8的标准肥皂库(aka soap4r),可以尝试

If you want to keep using Ruby 1.8's standard soap library (aka soap4r), you can try https://github.com/spox/soap4r-spox ...

wget --no-check-certificate https://github.com/spox/soap4r-spox/tarball/1.5.8.4
tar -xzf spox-soap4r-spox-1.5.8.4-0-g345a6cb.tar.gz
cd spox-soap4r-spox-345a6cb/
ruby setup.rb all

如果您使用的是rvm,请不要对最后一条命令进行sudo ...而是将su转换为root,将rvm转换为ruby 1.9,以便setup.rb将文件放置在正确的位置./p>

If you're using rvm, don't sudo the last command... instead su into root and rvm to ruby 1.9 so that setup.rb puts the files into the right place.

$ irb
ruby-1.9.2-p0 > require 'soap/rpc/driver'
 => true 
ruby-1.9.2-p0 > require 'xsd/qname'
 => false 
ruby-1.9.2-p0 > require 'soap/wsdlDriver'
 => true 
ruby-1.9.2-p0 > require 'fileutils'
 => true 

如其他 StackOverflow答案所建议的那样,您可能想要切换到类似savon的宝石.

As suggested by other StackOverflow answers, you might want to switch to a gem like savon.

这篇关于在Ruby 1.9.2中使用SOAP和其他标准库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆