(soap: Server) Серверу не удалось обработать запрос. ---> Ссылка на строку не установлена ​​для экземпляра строки. Имя параметра: s - PullRequest
0 голосов
/ 24 июня 2010

Я использую savon для использования API. Ниже приведены строки из моего кода.

 wSDL = "some_wsdl"
 client = Savon::Client.new(wSDL)     
 response = client.soap_action do |soap|
 soap.body = "<sample>string_value</sample>" , "<sample1>string_value</sample1>"
 end

Я получаю сообщение об ошибке (название), и ниже приведена трассировка приложения. Кстати, мой WSDL в формате https://some_wsdl, если это имеет значение.

/var/lib/gems/1.8/gems/savon-0.7.9/lib/savon/response.rb:141:in `handle_soap_fault'
/var/lib/gems/1.8/gems/savon-0.7.9/lib/savon/response.rb:81:in `initialize'
/var/lib/gems/1.8/gems/savon-0.7.9/lib/savon/client.rb:95:in `new'
/var/lib/gems/1.8/gems/savon-0.7.9/lib/savon/client.rb:95:in `method_missing'
app/controllers/deposit_controller.rb:33:in `deposit'

1 Ответ

0 голосов
/ 24 июня 2010

Не знаю, почему вы получаете ошибку, но усложняете жизнь, создавая тело мыла в виде строки. Savon создает SOAP-запросы от хэшей, поэтому следующее будет делать то, что вам нужно, несколько проще

wSDL = "some_wsdl"
client = Savon::Client.new(wSDL)     

# Add more details here including nested hashes    
request_hash = {
  "sample" => string_value,
  "sample1" => string_value
}

response = client.soap_action do |soap|
  soap.body = request_hash
end
...