Ruby 如何将这个示例savon1代码转换为savon2?
我试着从Ryan Bates的ruby演员阵容中运行这段代码,但它不起作用。我认为它假设使用Savon 1Ruby 如何将这个示例savon1代码转换为savon2?,ruby,soap,savon,Ruby,Soap,Savon,我试着从Ryan Bates的ruby演员阵容中运行这段代码,但它不起作用。我认为它假设使用Savon 1 require "savon" client = Savon::Client.new("http://www.webservicex.net/uszip.asmx?WSDL") response = client.request :web, :get_info_by_zip, body: { "USZip" => zip } if response.success?
require "savon"
client = Savon::Client.new("http://www.webservicex.net/uszip.asmx?WSDL")
response = client.request :web, :get_info_by_zip, body: { "USZip" => zip }
if response.success?
data = response.to_array(:get_info_by_zip_response, :get_info_by_zip_result, :new_data_set, :table).first
if data
@state = data[:state]
@city = data[:city]
@area_code = data[:area_code]
@time_zone = data[:time_zone]
puts @state
puts @city
puts @area_code
end
end
Savon 2的正确实现是什么?我想复制并粘贴它,然后让它工作。这里是我的服务包装类的一个摘录,它为其他ruby对象提供SOAP服务。我通过为每个SOAP操作提供WSDL位置和自己的方法来初始化客户机。第三方方法通过@client.call调用,该调用传递一个块,该块使用提供的参数创建SOAP消息
class Client
include Singleton
def wsdl_method_to_call
begin
response = @client.call(:wsdl_method_to_call) do
message auth:CREDENTIALS, param_1: param_1_value, param_2: param_2_value
end
rescue
raise CustomServiceException.new("Error ... , response : #{response}")
end
end
def initialize()
@client = Savon::Client.new(wsdl: WSDL)
end
private
WSDL = "http://service_host/wsdl"
CREDENTIALS = "foo|bar"
end
因此,也许你应该尝试以下方式:
response = client.call(:get_info_by_zip) do
message USZip: zip
end