2016-03-18 18 views
1

ヘロクのIPホワイトリストを使用してサービスにアクセスする必要があり、HTTPプロキシが必要です。SavonでHTTPプロキシを使用

私はProximoが上の追加、および約サボンでhttp://proxy:[email protected]

のように見えるプロキシURLを持って、私はそうのようにプロキシを設定しようとしているように構成:

client = Savon.client(wsdl: my_wsdl, proxy: "http://proxy:[email protected]") 

しかし、ときに私は要求を行います:

client.operations

私は、プロキシエラーが表示されます。

Wasabi::Resolver::HTTPError: Error: 407 for url http://mywsdl 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/wasabi3.5.0/lib/wasabi/resolver.rb:45:in `load_from_remote' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/wasabi3.5.0/lib/wasabi/resolver.rb:33:in `resolve' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/wasabi3.5.0/lib/wasabi/document.rb:142:in `xml' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/wasabi-3.5.0/lib/wasabi/document.rb:160:in `parse' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/wasabi-3.5.0/lib/wasabi/document.rb:147:in `parser' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/wasabi-3.5.0/lib/wasabi/document.rb:64:in `soap_actions' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/savon-2.11.1/lib/savon/client.rb:28:in `operations' 
     from (irb):7 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/railties-4.2.4/lib/rails/commands/console.rb:110:in `start' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/railties-4.2.4/lib/rails/commands/console.rb:9:in `start' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:68:in `console' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
     from /Users/ahamon/.gem/ruby/2.3.0/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>' 
     from bin/rails:4:in `require' 
     from bin/rails:4:in `<main>' 

プロキシオプションがなくてもすべてうまく動作します。

+0

私はuser:password @ urlの構文がブラウザでのみ動作すると思います。基本認証を試すことができます。 –

+0

私が言うことができる限り、Savonのドキュメントでは、プロキシをさらに構成する方法を指定していません(バージョン2)。@SteffenRoller – AndrewH

+0

プロキシの接続性が異なる可能性があるHTTPモジュールの機能だと思います。ソース、ルークを使用! –

答えて

1

を動作するはずだと思います。 WSDLを手動でフェッチし、ローカルファイルに保存することは不便です。 例

curl http://www.webservicesx.net/globalweather.asmx?wsdl > globalweather.wsdl 

は、基本的にはそれだそれ、あなたのクライアント定義

... 
secret = Base64.strict_encode64("#{user}:#{password}") 
client = Savon.client(
    wsdl: 'globalweather.wsdl', 
    proxy: "http://my-proxy.example.com:8080", 
    headers: { "Proxy-Authorization" => "BasiC#{secret}" }, 
    ... 
) 

に以下を追加する必要があります。 namespaceendpointを直接指定することで、WSDLなしで完全に作業することもできます。

SavonはWasabiを使用してWSDLを処理します。また、サーバーから文書をフェッチします。 WasabiはSavonのクライアント定義のパラメータを使用しません。それを変更するには、わさびの宝石を拡張する必要があります。

実行中のスクリプトはhttp://pastebin.com/t8NTuGKKです。

+0

こんにちはSteffen、私はそれをチェックします!以前はヘッダーにProxy-Authorizationを設定しようとしましたが、WSDLを別途ダウンロードする必要はありませんでした。 – AndrewH

+0

それはうまくいきました、ありがとう! – AndrewH

+0

ハ - 私は最初の賞金を獲得しました - whoo hoo :-) –

0

私は、これは私が解決策を見つけたと思う

client = Savon.client(wsdl: my_wsdl, proxy: "http://proxy-0-0-0-0.proximo.io", basic_auth: ["proxy-user", "proxy-secret"]) 
+0

basic_auth [プロキシではなくSOAPリソースにアクセスするための構成オプションのようです](http://savonrb.com/version2/globals.html)いずれにせよ、私は無駄にそれを試してみました。 – AndrewH

関連する問題