2012-10-05 30 views
6

Tôi đang sử dụng heroku để truy cập API yêu cầu ip ứng dụng của tôi phải nằm trong danh sách trắng. Vì vậy, tôi đã sử dụng tiện ích bổ sung Heroku để lấy host/ip cho danh sách trắng của api.HTTParty với Proxy

Kiểm tra nhanh mà tôi thiết lập để kiểm tra kết nối bằng HTTParty không thành công.

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 

Đi này như: req = FakeRequest.new req.make_post

Trả về một thông báo lỗi từ api phàn nàn rằng các nguồn IP không trong danh sách trắng. Tôi đã xem IP nguồn và nó không sử dụng proxy. Làm thế nào tôi có thể làm cho HTTParty đăng bài bằng cách sử dụng proxy và không IP của ISP của tôi.

Trả lời

3

Đây là mô-đun tôi đã xây dựng để làm điều này:

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 

này sử dụng các URL tới khi nó được thêm vào ứng dụng Heroku của bạn khi bạn cài đặt addon. Vì vậy, bạn có thể thả tệp này vào ứng dụng của mình và include ProximoParty vào lớp FakeRequest thay vì HTTParty và nó sẽ "chỉ hoạt động".

Có vẻ như mã của tôi đang làm điều tương tự như mã của bạn đang hoạt động, vì vậy điều tôi đoán là bạn có thể không mang theo thông tin xác thực đúng cách cho proximo.

Tôi đã gặp phải vấn đề tương tự khi nó không hoạt động tốt với tôi ngay lập tức. Tôi tin rằng vấn đề là tôi đã bị xáo trộn rằng có vẻ như là một giao thức "proxy:" trong URL proximo nhưng đó chỉ là phần tên người dùng của URL.

Dù sao, điều này có thể hoặc có thể không hữu ích, nhưng vui lòng cho tôi biết nếu có!

+0

Cảm ơn Jakeonrails! Tôi chuyển sang phần còn lại-khách hàng và đã đi theo HTTParty để Net :: HTTP để avail không có. Cuối cùng, và rất nhiều giờ sau đó, quyết định cài đặt mực trên một hộp chúng tôi có và vấn đề được giải quyết. – RidingRails

+0

Nếu tôi có cơ hội, tôi sẽ cung cấp cho mô-đun của bạn một shot, nhưng ở chế độ crunch ngay bây giờ. – RidingRails

+1

điều này không hoạt động. Ive thực sự không bao giờ có thể làm cho httparty làm việc với một proxy. Đã kết thúc bằng cách sử dụng ứng dụng khách. –

0

Tôi nghĩ rằng bạn cần phải gọi httparty địa phương, như thế này:

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

Như bạn cấu hình HTTParty như một đưa vào mô-đun, bạn phải gọi HTTParty phương pháp thông qua lớp học của bạn, vì vậy:

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

HTTParty có thể sử dụng địa chỉ máy chủ proxy bằng cách sử dụng proxy options sau.

[:+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

Tôi đưa vào liên kết vì nó bao gồm các bước thiết lập dài. Nhưng điểm lấy về việc thay đổi liên kết và trang trở nên không hợp lệ. Chúng tôi đã sử dụng máy chủ proxy mực trên một AMI EC2 và gọi nó là một ngày.