我是WSDL的新手。
代码(我已在视图中直接添加 - 进行测试):(页面:http://localhost:3000/ccapis
)
require 'savon'
client = Savon::Client.new(wsdl: "http://localhost:3000/ccapis/wsdl")
result = client.call(:fetch_prizes, message: { :gl_id => "123456789" })
result.to_hash
在控制器中:
soap_action "fetch_prizes",
:args => { :gl_id => :string },
:return => [:array]
def fetch_prizes
glnumber = params[:gl_id ]
prize = Prize.where(:gl_id => glnumber)
prize_to_show = []
a_hash = {}
prize.each do |p|
a_hash = { :prize => p.prize.to_s, :score => p.score.to_s, :date => p.round_date.to_s }
prize_to_show.push a_hash
a_hash = nil
end
render :soap => prize_to_show
end
当我尝试在控制台中运行时,一切都很好,我可以看到result.to_hash
但是当我转到http://0.0.0.0:3000/ccapis
时,我收到了上面提到的错误。
解释我想要实现的目标: 我需要为客户端提供WSDL,该客户端根据分数获取所有奖品。
如果我的方法有误,请指导我一份文件,这样我就可以阅读并更好地理解。再次感谢。