1

我正在尝试使用 Ruby/Rack 应用程序和用于 SOAP 的 Savon gem 以及用于请求/响应的 HTTPI gem 连接到位于防火墙后面的 DMZ 中的 SOAP API。

SOAP API 定义了一个 wsdl 文件,该文件指向防火墙后面的内部域名(例如“http://randomhostname/path/to/wsdl”),当我在 /etc 中将 ip 定义为主机名时,它可以正常工作/hosts 文件在我的机器上本地(1.1.1.1 随机主机名)。

我遇到的问题是我的应用程序的生产环境在 Heroku 上运行。如何将我尝试连接的服务器的外部 ip 映射到 Heroku 或我的应用程序中的 wsdl 中定义的主机名?

4

1 回答 1

0

不要使用 WSDL。直接调用函数。像这样:

#!红宝石

需要'savon'

stock_handle = ARGV[0] || 'OTEX'

客户 = Savon::Client.new 做
  wsdl.endpoint = 'http://www.webservicex.net/stockquote.asmx'
  wsdl.namespace = 'http://www.webserviceX.NET/'
结尾

response = client.request :wsdl, 'GetQuote' 做
  http.headers["SOAPAction"] = '"http://www.webserviceX.NET/GetQuote"'
  soap.body = { "符号" => stock_handle }
结尾

打印响应
于 2012-11-15T03:56:07.807 回答