Модуль процессора XML не найден ошибка при попытке использовать сервис мыла с помощью soap4r - PullRequest
4 голосов
/ 25 января 2012

Я пытаюсь использовать мыльный веб-сервис от soap4r gem. Я использую

ryby 1.8.7
rails 2.3.4
soap4r 1.5.8
rhodes 3.2.3

Я попробовал следующее в IRB.

require "rubygems"
require "soap/wsdlDriver"


wsdl = "http://www.w3schools.com/webservices/tempconvert.asmx?wsdl"
driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver

driver.wiredump_dev = STDOUT

params = {
"Celsius" => 32
}

driver.CelsiusToFahrenheit(params)

Я получил ответ. Я попробовал то же самое на Родосе.

  1. Я добавляю папку расширений в приложение Rhodes.
  2. Я скопировал папки soap, wsdl, xsd и tags внутри \Ruby187\lib\ruby\gems\1.8\gems\soap4r-1.5.8\lib в моей системе.

  3. Я добавил мыло в качестве расширения в свой файл build.yml

  4. Мне потребовалось следующее

    require 'soap/soap'
    require 'soap/wsdlDriver'
    

Я получаю следующее.

I 01/25/2012 11:07:08:059 000015ac              RhoRuby| require_compiled: Product/product_controller
I 01/25/2012 11:07:08:060 000015ac              RhoRuby| require_compiled: soap/soap
I 01/25/2012 11:07:08:062 000015ac              RhoRuby| require_compiled: xsd/qname
I 01/25/2012 11:07:08:063 000015ac              RhoRuby| require_compiled: xsd/charset
I 01/25/2012 11:07:08:065 000015ac              RhoRuby| require_compiled: xsd/iconvcharset
E 01/25/2012 11:07:08:066 000015ac              RhoRuby| require_compiled: error: can not find iconv
E 01/25/2012 11:07:08:067 000015ac              RhoRuby| require_compiled: error: can not find nkf
E 01/25/2012 11:07:08:067 000015ac              RhoRuby| require_compiled: error: can not find uconv
I 01/25/2012 11:07:08:067 000015ac              RhoRuby| require_compiled: soap/nestedexception
I 01/25/2012 11:07:08:069 000015ac              RhoRuby| require_compiled: soap/wsdlDriver
I 01/25/2012 11:07:08:074 000015ac              RhoRuby| require_compiled: wsdl/parser
I 01/25/2012 11:07:08:076 000015ac              RhoRuby| require_compiled: xsd/datatypes
I 01/25/2012 11:07:08:085 000015ac              RhoRuby| require_compiled: date
I 01/25/2012 11:07:08:086 000015ac              RhoRuby| require_compiled: dateOrig
I 01/25/2012 11:07:08:100 000015ac              RhoRuby| require_compiled: date/format

I 01/25/2012 11:07:08:112 000015ac              RhoRuby| require_compiled: xsd/xmlparser
I 01/25/2012 11:07:08:114 000015ac              RhoRuby| require_compiled: xsd/xmlparser/parser
I 01/25/2012 11:07:08:115 000015ac              RhoRuby| require_compiled: xsd/ns
I 01/25/2012 11:07:08:117 000015ac              RhoRuby| require_compiled: xsd/xmlparser/xmlparser
E 01/25/2012 11:07:08:118 000015ac              RhoRuby| require_compiled: error: can not find xml/parser
I 01/25/2012 11:07:08:118 000015ac              RhoRuby| require_compiled: xsd/xmlparser/xmlscanner
E 01/25/2012 11:07:08:120 000015ac              RhoRuby| require_compiled: error: can not find xmlscan/scanner
I 01/25/2012 11:07:08:120 000015ac              RhoRuby| require_compiled: xsd/xmlparser/rexmlparser
E 01/25/2012 11:07:08:121 000015ac              RhoRuby| require_compiled: error: can not find rexml/streamlistener
I 01/25/2012 11:07:08:121 000015ac                  APP| App error: XML processor module not found.
 C:/Spritle/Projects/mobile_projects/netHTTPtrial/extensions/soap/xsd/xmlparser.rb:74:in `<top (required)>'
C:/Spritle/Projects/mobile_projects/netHTTPtrial/extensions/soap/wsdl/parser.rb:12:in `require'
C:/Spritle/Projects/mobile_projects/netHTTPtrial/extensions/soap/wsdl/parser.rb:12:in `<top (required)>'
C:/Spritle/Projects/mobile_projects/netHTTPtrial/extensions/soap/soap/wsdlDriver.rb:9:in `require'
C:/Spritle/Projects/mobile_projects/netHTTPtrial/extensions/soap/soap/wsdlDriver.rb:9:in `<top (required)>'
C:/Spritle/Projects/mobile_projects/netHTTPtrial/app/Product/product_controller.rb:3:in `require'
C:/Spritle/Projects/mobile_projects/netHTTPtrial/app/Product/product_controller.rb:3:in `<top (required)>'

После вызова xmlParser выдается только ошибка. Понятия не имею. Если вы знаете кого-то, пожалуйста, помогите мне.

Ответы [ 3 ]

6 голосов
/ 01 марта 2012

У меня была такая же ошибка. Следуя инструкциям в этот пост решил проблему для меня:

В начале soap4r / xsd / charset.rb @internal_encoding = (RUBY_VERSION.to_f> = 1.9)? 'UTF8': $ KCODE

Затем измените строку 66 в /soap4r-1.5.8/lib/xsd/xmlparser.rb в c.to_s.downcase == имя

1 голос
/ 26 июля 2013

Смена строки

  c.downcase == name

в c.to_s.downcase == имя

в gems / soap4r-1.5.8 / lib / xsd / xmlparser.rb, у меня работает line76. Может быть, более старая версия трактовала символ как строку ..

0 голосов
/ 19 ноября 2013

Я использую ruby-1.8. Я должен был сделать name.downcase тоже, чтобы это работало. c.to_s.downcase == name.downcase

...