HTTParty与代理

时间:2012-10-05 16:13:35

标签: ruby heroku proxy httparty

我在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帖子。

6 个答案:

答案 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文件中。而已。完成。