我在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的用户名部分。
不管怎样,这也许有帮助,也许没有,但是如果有,请告诉我!