From: Dean Holdren Date: 2006-01-27T05:37:24+09:00 Subject: Error calling a SOAP service from within a Rails controller The following works fine as a standalone ruby program: ********************************************************************************************** t = Time.now starter = Time.local(t.year,t.mon, t.day) + (24 *3600) ender = starter + 7 * 24 *3600 lat = 40.352039 lon = -74.191961 require 'soap/wsdlDriver' params = {:maxt => false, :mint => false, :temp => true, :dew => false, :pop12 => false, :qpf => false, :sky => false, :snow => false, :wspd => false, :wdir => false, :wx => false, :waveh => false, :icons => false, :rh => false, :appt => true} wsdl = "http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl" drv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver drv.wiredump_dev = STDOUT if $DEBUG dwml = drv.NDFDgen(lat, lon, 'time-series', starter, ender, params) puts dwml require 'xsd/mapping' data = XSD::Mapping.xml2obj(dwml).data ********************************************************************************************** However, when I try to call the same from within a ruby controller, I get: SOAP::HTTPStreamError (502: Bad Gateway): c:/ruby-1.8.4/lib/ruby/1.8/soap/streamHandler.rb:200:in `send_post' c:/ruby-1.8.4/lib/ruby/1.8/soap/streamHandler.rb:109:in `send' c:/ruby-1.8.4/lib/ruby/1.8/soap/rpc/proxy.rb:170:in `route' c:/ruby-1.8.4/lib/ruby/1.8/soap/rpc/proxy.rb:141:in `call' c:/ruby-1.8.4/lib/ruby/1.8/soap/rpc/driver.rb:178:in `call' c:/ruby-1.8.4/lib/ruby/1.8/soap/rpc/driver.rb:232:in `nDFDgen' c:/ruby-1.8.4/lib/ruby/1.8/soap/wsdlDriver.rb:117:in `NDFDgen' The code in my controller is: ********************************************************************************************** def get_weather lat = params[:lat] lon = params[:lon] t = Time.now starter = Time.local(t.year,t.mon, t.day) + (24 *3600) ender = starter + 7 * 24 *3600 params = {:maxt => false, :mint => false, :temp => true, :dew => false, :pop12 => false, :qpf => false, :sky => false, :snow => false, :wspd => false, :wdir => false, :wx => false, :waveh => false, :icons => false, :rh => false, :appt => true} wsdl = "http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl" drv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver drv.wiredump_dev = STDOUT if $DEBUG dwml = drv.NDFDgen(lat, lon, 'time-series', starter, ender, params) @data = XSD::Mapping.xml2obj(dwml).data end **********************************************************************************************