在Ruby 1.9.2中使用SOAP和其他标准库

时间:2022-06-12 20:40:51

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

所以,我最近升级到1.9.2 Ruby,永远使用1.8.7(我想尝试Rails 3)。

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

我遇到的最大问题是我的SOAP要求语句都没有工作......我有类似的东西:

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

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?

即使是ftools也无法正常工作,但我认为(看看Ruby源代码)这成了'fileutils'?但我没有看到任何类似的SOAP .....它刚被删除?

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

如果是这样......我该怎么办?是否有任何插件基本上做同样的事情?

My code is like:

我的代码是这样的:

 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

and

 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

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?

我没有太多的肥皂经验......我甚至不确定wsdlDriver和rpc / driver是如何有所不同的...只是我当时有充分的理由使用这两个独立的库?

3 个解决方案

#1


5  

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

如果你想继续使用Ruby 1.8的标准soap库(aka soap4r),你可以试试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

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.

如果您正在使用rvm,请不要sudo最后一个命令...而是su到root和rvm到ruby 1.9,以便setup.rb将文件放到正确的位置。

$ 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 

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

正如其他*答案所建议的那样,您可能希望切换到像savon这样的gem。

#2


8  

https://rubygems.org/gems/soap4r-ruby1.9

https://rubygems.org/gems/soap4r-ruby1.9

gem install soap4r-ruby1.9

gem install soap4r-ruby1.9

This gem solved most of my soap related issues with ruby 1.9

这个宝石用ruby 1.9解决了我与肥皂相关的大部分问题

#3


1  

if you are trying rails 3 update your gem file with

如果您正在尝试使用rails 3更新您的gem文件

gem 'soap4r', :git => 'git://github.com/felipec/soap4r.git'

gem'force4r',:git =>'git://github.com/felipec/soap4r.git'

this is updated with fix.

这是通过修复更新的。

#1


5  

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

如果你想继续使用Ruby 1.8的标准soap库(aka soap4r),你可以试试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

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.

如果您正在使用rvm,请不要sudo最后一个命令...而是su到root和rvm到ruby 1.9,以便setup.rb将文件放到正确的位置。

$ 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 

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

正如其他*答案所建议的那样,您可能希望切换到像savon这样的gem。

#2


8  

https://rubygems.org/gems/soap4r-ruby1.9

https://rubygems.org/gems/soap4r-ruby1.9

gem install soap4r-ruby1.9

gem install soap4r-ruby1.9

This gem solved most of my soap related issues with ruby 1.9

这个宝石用ruby 1.9解决了我与肥皂相关的大部分问题

#3


1  

if you are trying rails 3 update your gem file with

如果您正在尝试使用rails 3更新您的gem文件

gem 'soap4r', :git => 'git://github.com/felipec/soap4r.git'

gem'force4r',:git =>'git://github.com/felipec/soap4r.git'

this is updated with fix.

这是通过修复更新的。