我在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 req.make_post
从api返回一条错误消息,抱怨源IP未列入白名单。我查看了源IP,它没有使用代理。如何使用代理而不是我的ISP的IP来发布HTTParty帖子。
答案 0 :(得分: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
当您安装插件时,它会使用PROXIMO URL,因为它会添加到您的heroku应用程序中。因此,您可以将此文件放入您的应用程序并将include ProximoParty
放入FakeRequest类而不是HTTParty,它应该“正常工作”。
看起来我的代码正在做你的代码正在做的事情,所以我猜测你可能没有为proximo正确地手动传递凭证。
我遇到了一个类似的问题,直到现在它对我不起作用。我认为问题在于我被抢购了,看起来在proximo URL中有一个“proxy:”协议,但这只是URL的用户名部分。
无论如何,这可能会有所帮助,也可能没有帮助,但如果有,请告诉我!
答案 1 :(得分:1)
当您将HTTParty配置为模块中的包含时,您必须通过您的类调用HTTParty方法,因此:
def make_post
self.class.post "https://test.com", :query => set_defaults
end
答案 2 :(得分:1)
使用最新版本的HTTParty就像使用
http_proxy
method:
class Foo
include HTTParty
http_proxy 'http://foo.com', 80, 'user', 'pass'
end
答案 3 :(得分:0)
我认为您需要调用本地httparty,如下所示:
def make_post
self.post "https://test.com", :query => set_defaults
end
答案 4 :(得分:0)
我添加了一个链接,因为它包含冗长的设置步骤。但是关于链接更改和页面变得无效的观点。我们在EC2 AMI上使用squid代理服务器并将其称为一天。
答案 5 :(得分:0)
这让我大吃一惊,您可以从这个问题上得到多少答案,这些答案不起作用。这是我的工作方式:
$("ul li:eq(1)").text();
将此作为全局替代项放入您的env.rb文件中。而已。完成。