2011-06-14 2 views
0

Ruby에서 웹 서비스 클라이언트를 작성하려고합니다.Ruby에서 웹 서비스 클라이언트를 빌드하려고 할 때 이러한 오류가 발생합니다.

나는 웹 서비스 클라이언트 코드를 생성하려면 다음 soap4r 루비 스크립트를 호출하려고하면, 나는 다음과 같은 코드를 호출 할 때

ignored attr: {http://www.w3.org/2006/05/addressing/wsdl}Action I, [2011-06-09T17:16:01.012268 #10104] INFO -- app: Creating class definition. I, [2011-06-09T17:16:01.012268 #10104] INFO -- app: Creates file 'SessionServic e.rb'. F, [2011-06-09T17:16:01.014268 #10104] FATAL -- app: Detected an exception. Stop ping ... undefined method 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:in trim_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:in dump_comment' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/codegen/classdef.rb:51: in dump' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/classDefCreator.r b:118:in block in dump_complextype' C:/Ruby192/lib/ruby/gems/1.9.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:in dump_complextype' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/classDefCreator.r b:60:in dump' C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:77:i n block in create_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: in open' 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 n create_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 n run' 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:in start' 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:in load' C:/Ruby192/bin/wsdl2ruby.rb:19:in `' I, [2011-06-09T17:16:01.016268 #10104] INFO -- app: End of app. (status: -1)

: 나는 다음과 같은 오류가

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

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:in new' 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:in block 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:in query' 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 protect_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:in new ' from C : /Ruby192/lib/ruby/gems/1.9.1/ gems/httpclient-2.2.1/lib/httpclient/session.rb : 748 : create_socket' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:705:in 블록에서 연결 ' C : /Ruby192/lib/ruby/1.9.1/timeout.rb : 57 : timeout' from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:in 시간 종료' C : /Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/li b/httpclient/session.rb : 704 : connect' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient/session.rb:568:in에서 ' 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 'C에서 : /Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb : 866 : block in do_request' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httpclient-2.2.1/lib/httpclient.rb:953:in에 protect_keep_alive_disconnected'C에서 를 :/Ruby192/lib 디렉토리/루비 /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 : get_content' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/xmlSchema/importer.rb:73:in C에서 ' 가져 오기 : /Riby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/xmlSchema/importer.rb : 36 : import' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/importer.rb:18:in에서 ' 을 C : /Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/wsdlDriver.rb : 146에서 가져 오십시오. 'C에서 : /DevProjects/application-development-environment/UwsSampleRuby/blah.rb : 6 : new' from C:/DevProjects/application-development-environment/UwsSampleRuby/blah.rb:6:in에서'import' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/wsdlDriver.rb:32:in 초기화에

이유는 이러한 오류를 얻고있다, 그리고 나는 그들 주위에 어떻게 작동합니까? C# .Net에서 웹 서비스 클라이언트를 만들 수 있기 때문에 웹 서비스가 작동하고 있다는 것을 알고 있습니다.

답변

1

soap4r에는 Ruby 1.9와 관련된 여러 가지 알려진 문제점이 있습니다. 최신 SOAP 툴킷 중 하나 (예 : savon 또는 handsoap)를 사용하는 것이 좋습니다.

+0

나는이 두 툴킷으로 전환을 시도했으나 두 경우 모두 이전과 같은 오류가 발생합니다. 문제는 그보다 낮은 수준 인 것 같습니다. – ATDeveloper