1

Ruby /RackアプリとSOAP用のSavongem、および要求/応答用のHTTPI gemを使用して、ファイアウォールの背後にあるDMZにあるSOAPAPIに接続しようとしています。

SOAP APIは、ファイアウォールの背後にある内部ドメイン名を指すwsdlファイル(「http:// randomhostname / path / to / wsdl」など)を定義します。これは、/etcでホスト名へのIPを定義すると正常に機能します。 / hostsファイルを自分のマシンにローカルに(1.1.1.1randomhostname)。

私が遭遇した問題は、私のアプリの本番環境がHerokuで実行されていることです。接続しようとしているサーバーの外部IPを、Herokuのwsdlまたはアプリケーションで定義されているホスト名にマップするにはどうすればよいですか?

4

1 に答える 1

0

WSDLを使用しないでください。関数を直接呼び出します。このような:

#!ルビー

'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/'
終わり

response = client.request:wsdl、'GetQuote' do
  http.headers ["SOAPAction"] ='"http://www.webserviceX.NET/GetQuote"'
  soap.body = {"symbol" => stock_handle}
終わり

応答を印刷
于 2012-11-15T03:56:07.807 に答える