2012-10-05 172 views
6

我在heroku試圖訪問一個API,要求我的應用程序ip被列入白名單。因此,我使用了heroku插件proximo來獲取api白名單的主機/ IP。HTTP代理與代理

我設置了使用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郵件。

回答

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應用程序在安裝插件。因此,您可以將此文件放入您的應用程序中,並將其放入您的FakeRequest類而不是HTTParty中,並且它應該「正常工作」。

它看起來像我的代碼是做你的代碼正在做同樣的事情,所以我猜測是你可能不會手動承載的proximo正確的憑據。

我遇到了一個類似的問題,它對我來說並不是很適合我。我認爲問題在於我被絆倒了,看起來在proximo URL中有一個「proxy:」協議,但這只是URL的用戶名部分。

不管怎樣,這可能或不會幫助,但請讓我知道,如果它!

+0

謝謝Jakeonrails!我切換到休息客戶端,並根據HTTParty到Net :: HTTP無濟於事。最後,大量小時後,決定在我們有的盒子上安裝魷魚,並解決了問題。 – RidingRails

+0

如果我有機會,我會給你的模塊一個鏡頭,但現在在緊縮模式。 – RidingRails

+1

這只是不起作用。我實際上從來沒有能夠使用代理進行httparty工作。結束使用休息客戶端。 –

0

我認爲你需要撥打當地httparty,像這樣:

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

當您配置HTTParty爲您的模塊中的夾雜物,你必須調用HTTParty方法通過你的類,所以:

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

HTTParty可以使用代理服務器地址使用以下proxy options

[:+http_proxyaddr+:] Address of proxy server to use 
[:+http_proxyport+:] Port of proxy server to use. 
[:+http_proxyuser+:] User for proxy server authentication 
[:+http_proxypass+:] Password for proxy server authentication. 
0

我收錄了一個鏈接,因爲它包含了冗長的設置步驟。但是關於鏈接改變和頁面變得無效的觀點。我們在EC2 AMI上使用了魷魚代理服務器,並稱它爲一天。