Forum: Ruby on Rails Calling a SOAP service from within a Rails controller

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
860dc779f0007a35bdcd12b5fc9eb589?d=identicon&s=25 Dean Holdren (Guest)
on 2006-01-26 17:51
(Received via mailing list)
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/...
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 in Weather_map#data

 502: Bad Gateway


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/...
		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
**********************************************************************************************
Cd2382441bbe2ec68e3bf36aea0ca2ea?d=identicon&s=25 Adam Keys (Guest)
on 2006-01-26 20:55
(Received via mailing list)
On Jan 26, 2006, at 10:49 AM, Dean Holdren wrote:
>
> SOAP::HTTPStreamError in Weather_map#data
>
>  502: Bad Gateway

Did you try grabbing this file with a web browser, wget, curl, open-
uri, etc.?  Sounds like there could be a problem with the remote server.

Also, it looks like you're going to be downloading the WSDL every
time your controller runs.  I'd download the WSDL and put it
somewhere in your app so that you aren't having to wait for that file
every time.

--
~akk
http://therealadam.com
860dc779f0007a35bdcd12b5fc9eb589?d=identicon&s=25 Dean Holdren (Guest)
on 2006-01-26 21:35
(Received via mailing list)
On 1/26/06, Adam Keys <adam@therealadam.com> wrote:
> On Jan 26, 2006, at 10:49 AM, Dean Holdren wrote:
> >
> > SOAP::HTTPStreamError in Weather_map#data
> >
> >  502: Bad Gateway
>
> Did you try grabbing this file with a web browser, wget, curl, open-
> uri, etc.?  Sounds like there could be a problem with the remote server.

Yes I did, works fine within both a web browser, or as I stated
before, within a standalone ruby program.

The error occurs within the SOAP call, only when a rails controller is
the client.

>
> Also, it looks like you're going to be downloading the WSDL every
> time your controller runs.  I'd download the WSDL and put it
> somewhere in your app so that you aren't having to wait for that file
> every time.

OK, thanks, I will do that. but I'm more concerned with the error with
SOAP call, here is the stack trace:

SOAP::HTTPStreamError in Weather_map#data
502: Bad Gateway
RAILS_ROOT: ./script/../config/..

Application Trace | Framework Trace | Full Trace
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'
860dc779f0007a35bdcd12b5fc9eb589?d=identicon&s=25 Dean Holdren (Guest)
on 2006-01-28 01:06
(Received via mailing list)
well it turns out I was passing bad parameters to the service. weird
response though...
This topic is locked and can not be replied to.