0

RubyでWebサービスクライアントを構築しようとしています。

次のsoap4rrubyスクリプトを呼び出して、Webサービスクライアントコードを生成しようとすると、次のようになります。

wsdl2ruby.rb --wsdl *[web_service_url]* --type client

次のエラーが発生します。

無視された属性:{http://www.w3.org/2006/05/addressing/wsdl}アクションI、[2011-06-09T17:16:01.012268#10104]情報-アプリ:クラス定義を作成しています。私、[2011-06-09T17:16:01.012268#10104]情報-アプリ:ファイル「SessionService.rb」を作成します。F、[2011-06-09T17:16:01.014268#10104]致命的-アプリ:例外を検出しました。pingを停止します...未定義のメソッドcollect' for #<String:0x32260c8> (NoMethodError) C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/codegen/gensupport.rb:2 39:intrim_eol'C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/codegen/gensupport.rb:2 27:in format' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/codegen/commentdef.rb:2 7:indump_comment' C: /Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/codegen/classdef.rb:51:dump_complextype'C:/Ruby192/lib/ruby/gems/1.9dump' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/classDefCreator.r b:118:inのブロック内.1 / gems / soap4r-1.5.8 / lib / wsdl / soap / classDefCreator.r b:116:in collect' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/classDefCreator.r b:116:indump_complextype'C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib /wsdl/soap/classDefCreator.r b:60:dump' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:77:i ncreate_classdefのブロック'C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:171:in block in write_file' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:170: inopen' C:/ Ruby192 / lib / ruby /gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:170:in write_file' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:76:i ncreate_classdef'C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5 .8 / lib / wsdl / soap / wsdl2ruby.rb:62:i n create_file' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:42:i nrun'C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/bin/wsdl2ruby.rb:46:in run' C:/Ruby192/lib/ruby/1.9.1/logger.rb:691:instart'C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/bin/wsdl2ruby.rb:137:in <top ( required)>' C:/Ruby192/bin/wsdl2ruby.rb:19:inload' C:/Ruby192/bin/wsdl2ruby.rb:19:in `'私、[2011-06-09T17:16:01.016268#10104]情報-アプリ:アプリの終わり。(ステータス:-1)

の場合、次のコードを呼び出してWebサービスクライアントを動的に生成しようとします。

require 'soap/wsdlDriver'

WSDL_URL = "http://*[web_service_url]*"
factory = SOAP::WSDLDriverFactory.new(WSDL_URL)
driver = factory.create_rpc_driver

次のエラーが発生します。

C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:748:in initialize': The requested service provider could not be loaded or initialized. - socket(2) (http://*web_service_url*) (Errno::E10106) from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:748:innew'from C:/Ruby192/lib/ruby/gems/1.9。 1 / gems / httpclient-2.2.1 / lib / httpclient / session.rb:748:in create_socket' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:705:inblock in connect'from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:57:in timeout' from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:in timeout' from C :/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:704:in connect' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:568:inquery'from C:/Ruby192/lib/ruby/gems/1.9.1 /gems/httpclient-2.2.1/lib/httpclient/session.rb:158:in query' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:1057:in do_get_block'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient。 rb:866:in block in do_request' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:953:in secure_keep_alive_disconnected'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:865:in do_request' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:938:in follow_redirect'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:577:in get_content' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/xmlSchema/importer.rb:73:in fetch' from C:/Ruby192/lib/ruby/gems/1.9 .1 / gems / soap4r-1.5.8 / lib / wsdl / xmlSchema / importer.rb:36:in import' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/importer.rb:18:in import'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/ lib / soap / wsdlDriver.rb:146:in import' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/wsdlDriver.rb:32:in initialize'from C:/DevProjects/application-development-environment/UwsSampleRuby/blah.rb:6:in new' from C:/DevProjects/application-development-environment/UwsSampleRuby/blah.rb:6:in '

上記と同じコードを呼び出そうとすると、URLが異なります(テスト環境のURLではなく本番URL)と、別のエラーが発生します。

C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:748:in initialize': getaddrinfo: A non-recoverable error occurred during a database lookup. (https://[prod_url]:443) (SocketError) from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:748:innew'from C:/Ruby192/lib/ruby/gems/1.9。 1 / gems / httpclient-2.2.1 / lib / httpclient / session.rb:748:in create_socket' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:705:inblock in connect'from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:57:in timeout' from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:intimeout' from C :/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:704:in connect' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:568:inquery'from C:/Ruby192/lib/ruby/gems/1.9.1 /gems/httpclient-2.2.1/lib/httpclient/session.rb:158:in query' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:1057:indo_get_block'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient。 rb:866:in block in do_request' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:953:insecure_keep_alive_disconnected'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:865:indo_request' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:938:infollow_redirect'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:577:in get_content' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/xmlSchema/importer.rb:73:infetch' from C:/Ruby192/lib/ruby/gems/1.9 .1 / gems / soap4r-1.5.8 / lib / wsdl / xmlSchema / importer.rb:36:in import' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/importer.rb:18:inimport'from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/ lib / soap / wsdlDriver.rb:146:in import' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/wsdlDriver.rb:32:ininitialize'from C:/DevProjects/application-development-environment/UwsSampleRuby/blah.rb:6:in new' from C:/DevProjects/application-development-environment/UwsSampleRuby/blah.rb:6:in'

これらのエラーが発生するのはなぜですか。また、どのように回避すればよいですか。C#.NetでWebサービスクライアントを問題なく構築できるので、Webサービスが稼働していることはわかっています。

4

1 に答える 1

1

soap4r には、Ruby 1.9 に関する既知の問題がいくつかあります。savonhandsoapなどの新しい SOAP ツールキットの使用を検討する必要があります。

于 2011-06-14T17:05:31.610 に答える