[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Error calling a SOAP service from within a Rails controller

Dean Holdren

1/26/2006 8:37:00 PM

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....
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....
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
**********************************************************************************************


4 Answers

Anthony Elizondo

1/26/2006 8:48:00 PM

0

When you're playing with SOAP in Rails, I think you want to use
ActionWebService. See:
http://rails.rubyonrails.com/classes/ActionWebService/Client...

For Rails specific questions such as this, try the Rails mailing list,
at http://lists.rubyonrails.org/mailman/list... or
http://www.ruby-forum.c...


Dean Holdren

1/26/2006 9:23:00 PM

0

thanks, I've tried using ActionWebService::Client::SOAP, but I get the
same error (pretty much), here's the version of the method within my
Controller that used ActionWebService:

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 = WeatherParametersType.new({: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})

soap_client = ActionWebService::Client::Soap.new(WeatherAPI,
"http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver...)
@dwml = soap_client.NDFDgen(lat, lon, 'time-series', starter, ender, params)
@data = @dwml
end

and I'm using these classes I've defined:

class WeatherParametersType < ActionWebService::Struct
member :maxt, :boolean
member :mint, :boolean
member :temp, :boolean
member :dew, :boolean
member :pop12, :boolean
member :qpf, :boolean
member :sky, :boolean
member :snow, :boolean
member :wspd, :boolean
member :wdir, :boolean
member :wx, :boolean
member :waveh, :boolean
member :icons, :boolean
member :rh, :boolean
member :appt, :boolean
end


class WeatherAPI < ActionWebService::API::Base
api_method :NDFDgen, :expects => [[Float], [Float], [String], [Time],
[Time], [WeatherParametersType]], :returns => [String]
end

The error stack trace:

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/gems/1.8/gems/actionwebservice-1.0.0/lib/action_web_s
ervice/client/soap_client.rb:61:in `perform_invocation'
c:/ruby-1.8.4/lib/ruby/gems/1.8/gems/actionwebservice-1.0.0/lib/action_web_s
ervice/client/base.rb:15:in `method_missing'

On 1/26/06, Anthony Elizondo <anthony.elizondo@gmail.com> wrote:
> When you're playing with SOAP in Rails, I think you want to use
> ActionWebService. See:
> http://rails.rubyonrails.com/classes/ActionWebService/Client...
>
> For Rails specific questions such as this, try the Rails mailing list,
> at http://lists.rubyonrails.org/mailman/list... or
> http://www.ruby-forum.c...
>


Dean Holdren

1/28/2006 12:06:00 AM

0

well it turns out I was passing bad parameters to the service. weird
response though...

On 1/26/06, Dean Holdren <deanholdren@gmail.com> wrote:
> thanks, I've tried using ActionWebService::Client::SOAP, but I get the
> same error (pretty much), here's the version of the method within my
> Controller that used ActionWebService:
>
> 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 = WeatherParametersType.new({: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})
>
> soap_client = ActionWebService::Client::Soap.new(WeatherAPI,
> "http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver...)
> @dwml = soap_client.NDFDgen(lat, lon, 'time-series', starter, ender, params)
> @data = @dwml
> end
>
> and I'm using these classes I've defined:
>
> class WeatherParametersType < ActionWebService::Struct
> member :maxt, :boolean
> member :mint, :boolean
> member :temp, :boolean
> member :dew, :boolean
> member :pop12, :boolean
> member :qpf, :boolean
> member :sky, :boolean
> member :snow, :boolean
> member :wspd, :boolean
> member :wdir, :boolean
> member :wx, :boolean
> member :waveh, :boolean
> member :icons, :boolean
> member :rh, :boolean
> member :appt, :boolean
> end
>
>
> class WeatherAPI < ActionWebService::API::Base
> api_method :NDFDgen, :expects => [[Float], [Float], [String], [Time],
> [Time], [WeatherParametersType]], :returns => [String]
> end
>
> The error stack trace:
>
> 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/gems/1.8/gems/actionwebservice-1.0.0/lib/action_web_s
> ervice/client/soap_client.rb:61:in `perform_invocation'
> c:/ruby-1.8.4/lib/ruby/gems/1.8/gems/actionwebservice-1.0.0/lib/action_web_s
> ervice/client/base.rb:15:in `method_missing'
>
> On 1/26/06, Anthony Elizondo <anthony.elizondo@gmail.com> wrote:
> > When you're playing with SOAP in Rails, I think you want to use
> > ActionWebService. See:
> > http://rails.rubyonrails.com/classes/ActionWebService/Client...
> >
> > For Rails specific questions such as this, try the Rails mailing list,
> > at http://lists.rubyonrails.org/mailman/list... or
> > http://www.ruby-forum.c...
> >
>
>


rst0wxyz

4/8/2011 4:25:00 PM

0

India Graduates Millions, But Too Few Are Fit to Hire - Both of you
are wrong. According to Albert Fung, they are the "best and brightest"
in the world, and Silicon Valley's hi-tech companies can't get enough
of them.