Ответ
require "soap/wsdlDriver"
wsdl = "http://frontdoor.ctn5.org/CablecastWS/CablecastWS.asmx?WSDL"
driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
response = driver.getChannels('nill')
for item in response.getChannelsResult.channel
puts item.name
puts item.channelID
end
Как я получил ответ
Вы можете выяснить способы ответа через
response.methods
Это даст вам длинный список методов, которые трудно отсортировать, поэтому я хотел бы вычесть из обобщенных методов. Ruby позволяет вычитать массивы.
response.methods - Object.new.methods
Используя эту технику, я нашел метод getChannelsResult для ответа. Я повторил процесс
resonse.getChannelsResult.methods - Object.new.methods
Я нашел метод канала для его результата. Опять же!
response.getChannelsResult.channel.methods - Object.new.methods
Это вернуло кучу методов, в том числе: sort, min, max и т. Д. Итак, я угадал Array. Простое подтверждение было в порядке
response.getChannelsResult.channel.class
Конечно, он вернул массив. Чтобы упростить жизнь, я просто поработал с первым элементом массива, чтобы получить его методы
response.getChannelsResult.channel.first.methods - Object.new.methods
Ух ты, я нашел еще два метода "name" и "channelID"