我在heroku上试图访问一个api,它要求我的应用程序ip被白名单。所以,我使用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请求
需求制造岗
从API返回一条错误消息,抱怨源IP没有白名单。我查看了源IP,它没有使用代理。如何使用代理而不是ISP的IP使httparty post生效。

最佳答案

这是我为完成以下任务而构建的模块:

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

这将使用proximo url,因为它是在安装加载项时添加到heroku应用程序中的。所以你可以把这个文件放到你的应用程序中,然后include ProximoParty放到你的fakerequest类中,而不是httparty,它应该“正常工作”。
我的代码看起来和你的代码做的一样,所以我猜你可能没有为proximo正确地手动传递凭证。
我遇到了一个类似的问题,它对我来说并不是很有效。我相信问题是我被绊倒了,在proximo url中似乎有一个“proxy:”协议,但那只是url的用户名部分。
不管怎样,这也许有帮助,也许没有,但是如果有,请告诉我!

10-01 03:01