Rails 3:SOAP4R返回“Assert:未知数组定义”,用于Akamai请求
-
12-11-2019 - |
题
升级我们的应用程序中的一些东西,现在我们的SOAP请求到Akamai并未触发。单元测试反而导致RuntimeError: Assert: unknown array definition
的返回
这是Akamai类:
require 'rexml/document'
class Akamai
def self.purge_cache(url)
require 'soap/wsdlDriver'
factory = SOAP::WSDLDriverFactory.new('https://ccuapi.akamai.com/ccuapi-axis.wsdl')
driver = factory.create_rpc_driver
driver.purgeRequest(
'our-username', # username
'our-password', # password
'', # network; deprecated
[], # options
[url]
)
end
end
.
我认为它可能是我添加到升级的分支中的一些新宝石,但Gemfile只有两个添加:
gem 'libxml-ruby', '1.1.4'
gem 'nokogiri'
.
删除它们不会解决问题。这是spew的错误:
test_unsuccessful_purge(AkamaiTest):
RuntimeError: Assert: Unknown array definition.
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/wsdl/soap/complexType.rb:122:in `find_arytype'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/wsdl/soap/complexType.rb:161:in `content_arytype'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/wsdl/soap/complexType.rb:55:in `child_type'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/wsdlencodedregistry.rb:168:in `array2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/wsdlencodedregistry.rb:145:in `complexobj2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/wsdlencodedregistry.rb:121:in `obj2typesoap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/wsdlencodedregistry.rb:38:in `obj2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:135:in `_obj2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:54:in `block (2 levels) in objs2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:52:in `upto'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:52:in `block in objs2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:560:in `block in protect_mapping'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:533:in `protect_threadvars'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:549:in `protect_mapping'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/mapping/mapping.rb:51:in `objs2soap'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/rpc/proxy.rb:475:in `request_rpc_enc'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/rpc/proxy.rb:457:in `request_rpc'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/rpc/proxy.rb:412:in `request_body'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/rpc/proxy.rb:127:in `call'
/Users/kevin/.rvm/gems/ruby-1.9.2-p0@media3/gems/soap4r-ruby1.9-2.0.3/lib/soap/rpc/driver.rb:151:in `call'
(eval):6:in `purgeRequest'
/Users/kevin/code/medialytics/app/models/akamai.rb:8:in `purge_cache'
test/unit/akamai_test.rb:12:in `block in <class:AkamaiTest>'
. 解决方案
我最终倾倒了soap4r-humy1.9,一起使用萨那,因为它最近更新,似乎更好地结合在一起。
不隶属于 StackOverflow