0

私のアプリは localhost でうまく動作します。私たちの Cloud Foundry セットアップにはアウトバウンド接続がありません...そのため、プロキシ経由でアウトバウンド接続を取得できると言われました。

そのプロキシを使用するには、Faraday リクエストで何を変更する必要がありますか?

私のコードと接続方法。

url = "#{@config[:host]}#{@config[:login_path]}"
c = Faraday.new(:url => url,
                :request => { :timeout => 20, :open_timeout => 5},
                :ssl => {:verify => false}) do |f|
  f.request :url_encoded
  f.adapter Faraday.default_adapter
  f.response :json, :content_type => /\bjson$/
end

  @resp = c.post(url, {username: username, password: password,
    deviceId: @config[:device_id], deviceName: @config[:device_name], deviceType: @config[:device_type],
    appId: @config[:app_id], scope: @config[:scope]})

これは、セットアップされたプロキシを使用する方法です。

「サービスがバインドされると、アプリケーションはVCAP_SERVICES環境変数に JSON 形式のサービス定義を持ち、コマンドを使用して形式を確認できますcf env x-explorer。アプリは、指定された資格情報を使用してプロキシを解析およびセットアップする必要があります。

資格証明の例を次に示します。パラメータのみuri、または個々のパラメータを使用できます: hostportusernameおよびpassword"

uri: http://2abcf906-127e-495c-ae71-c69712862292:616e714aea0cfc81de67ad1445cf1448e38d6a8db345a452c0e1ddc830b8f132@f.services.g1.app.cloud.my_company.net:49349
host: f.services.g1.app.cloud.my_company.net
port: 49349
username: 2abcf906-127e-495c-ae71-c69712862292
password: 616e714aea0cfc81de67ad1445cf1448e38d6a8db345a452c0e1ddc830b8f132

繰り返しますが、アプリはローカルホストでうまく機能します。会社の Cloud Foundry セットアップでアウトバウンド接続がありません。サービスをバインドしたので、問題ありません。

アウトバウンド要求がプロキシを通過するようにするには、何を追加すればよいですか?

4

1 に答える 1

2

これを試して

url = "#{@config[:host]}#{@config[:login_path]}"
c = Faraday.new(:url => url,
                :request => { :timeout => 20, :open_timeout => 5},
                :ssl => {:verify => false}) do |f|
  f.request :url_encoded
  f.adapter Faraday.default_adapter
  f.response :json, :content_type => /\bjson$/url = "#{@config[:host]}#{@config[:login_path]}"
c = Faraday.new(:url => url,
                :request => { :timeout => 20, :open_timeout => 5},
                :ssl => {:verify => false}) do |f|
  f.request :url_encoded
  f.adapter Faraday.default_adapter
  f.response :json, :content_type => /\bjson$/
  f.proxy = "http://2abcf906-127e-495c-ae71-c69712862292:616e714aea0cfc81de67ad1445cf1448e38d6a8db345a452c0e1ddc830b8f132@f.services.g1.app.cloud.my_company.net:49349"
end

  @resp = c.post(url, {username: username, password: password,
    deviceId: @config[:device_id], deviceName: @config[:device_name], deviceType: @config[:device_type],
    appId: @config[:app_id], scope: @config[:scope]})

end

  @resp = c.post(url, {username: username, password: password,
    deviceId: @config[:device_id], deviceName: @config[:device_name], deviceType: @config[:device_type],
    appId: @config[:app_id], scope: @config[:scope]})

ここでは、ファラデーリクエストでプロキシを設定する方法を示しています

conn = Faraday.new(url, ssl: {verify:false}) do |conn|
  # middleware ...
  conn.adapter <adapter>

  conn.proxy "http://localhost:80"
end

https://github.com/lostisland/faraday/issues/221

于 2015-07-24T22:14:32.120 に答える