7

アプリの IP をホワイトリストに登録する必要がある API にアクセスしようとしている heroku を使用しています。そこで、heroku アドオンの proximo を使用して、API のホワイトリストのホスト/IP を取得しました。

HTTParty を使用して接続をテストするためにセットアップした簡単なテストが失敗します。

class FakeRequest
 include HTTParty
 http_proxy 'XX.XXX.XX.XX', 80, 'user', 'pass'


 def set_defaults
   {:api_key=>"BLARG_BLARG",
    :login_name=>"user",
    :method => "do_something",
    :response_format => "json", 
    :v => "1.0",
    :login_password=>"pass"}
end


 def make_post
  HTTParty.post "https://test.com", :query => set_defaults 
 end
end 

次のようになります: req = FakeRequest.new req.make_post

ソース IP がホワイトリストに登録されていないというエラー メッセージを API から返します。ソース IP を確認しましたが、プロキシを使用していません。ISP の IP ではなく、プロキシを使用して HTTParty 投稿を作成するにはどうすればよいですか。

4

7 に答える 7

3

これは私がこれを行うために構築したモジュールです:

module ProximoParty

  PROXIMO = URI.parse(ENV['PROXIMO_URL'])

  def self.included(base)
    base.send(:include, HTTParty)
    base.http_proxy(PROXIMO.host, 80, PROXIMO.user, PROXIMO.password)
  end

end

これは、アドオンのインストール時にherokuアプリに追加されるPROXIMOURLを使用します。したがって、このファイルをinclude ProximoPartyHTTPartyの代わりにアプリとFakeRequestクラスにドロップすると、「正常に機能する」はずです。

私のコードはあなたのコードがしているのと同じことをしているように見えます、それで私が推測しているのはあなたがプロキシモのために適切にクレデンシャルを手動で引き継いでいないかもしれないということです。

私はそれがすぐに私のために完全に機能していなかったという同様の問題に遭遇しました。問題は、プロキシURLに「proxy:」プロトコルがあるように見えたのにつまずいたことだと思いますが、それはURLのユーザー名部分にすぎませんでした。

とにかく、これは役立つかもしれないし、役に立たないかもしれませんが、それが役立つかどうか私に知らせてください!

于 2012-10-05T22:28:04.203 に答える
1

モジュールにインクルードとして HTTParty を構成するときは、クラスを介して HTTParty メソッドを呼び出す必要があるため、次のようになります。

def make_post
  self.class.post "https://test.com", :query => set_defaults
end
于 2014-05-23T14:06:40.610 に答える
0

長いセットアップ手順が含まれているため、リンクを含めました。ただし、リンクが変更され、ページが無効になることについて指摘されました。EC2 AMI で squid プロキシ サーバーを使用し、1 日で終了しました。

于 2016-03-05T01:12:45.553 に答える