我正在尝试使用Ruby / Rack应用程序和SOAP的Savon gem以及请求/响应的HTTPI gem连接到位于防火墙后面的DMZ中的SOAP API。
SOAP API定义了一个wsdl文件,该文件指向防火墙后面的内部域名(例如“http:// randomhostname / path / to / wsdl”),并且在我将ip定义为主机名时工作正常我的/ etc / hosts文件在我的机器上本地(1.1.1.1 randomhostname)。
我遇到的问题是我的应用程序的生产环境在Heroku上运行。 如何将我尝试连接的服务器的外部ip映射到Heroku或我的应用程序中wsdl中定义的主机名?
答案 0 :(得分:0)
不要使用WSDL。直接调用函数。像这样:
#!ruby require 'savon' stock_handle = ARGV[0] || 'OTEX' client = Savon::Client.new do wsdl.endpoint = 'http://www.webservicex.net/stockquote.asmx' wsdl.namespace = 'http://www.webserviceX.NET/' end response = client.request :wsdl, 'GetQuote' do http.headers["SOAPAction"] = '"http://www.webserviceX.NET/GetQuote"' soap.body = { "symbol" => stock_handle } end print response