2013-03-14 36 views
0

我的HTTP代码针对代理服务器或无代理服务器运行。喜欢的东西:Ruby如何处理HTTP呼叫针对代理服务器运行并且没有代理

@uri = URI(testrail_url) 

    # With Proxy 
    # proxy_url = "http://URL:port" 
    # proxy_uri = URI(proxy_url) 
    # proxy = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port) 
    # @http = proxy.new(@uri.host, 443) 

    # Without Proxy 
    @http = Net::HTTP.new(@uri.host, 443) 

请提出一个方法来处理双方在基础网络上的同一块代码上的代理或无代理。

回答

0

低于我的建议。理想情况下,把它放在一个单独的模块中。

require 'net/http' 

proxy = { 
    host: 'proxy host', 
    port: 8080, 
    user: 'login', 
    password: 'password' 
} 

uri_str = "http://google.com" 

begin 
    uri = URI.parse(uri_str) 
    http = if proxy 
    ::Net::HTTP::Proxy(
     proxy[:host], 
     proxy[:port], 
     proxy[:user], 
     proxy[:password] 
    ).new(uri.host, uri.port) 
    else 
    ::Net::HTTP.new(uri.host, uri.port) 
    end 
    response = http.get(uri.request_uri) 

rescue Exception => e 
    puts "There was an error: #{uri_str} #{e.message}" 
    puts "Backtrace:\n\t#{e.backtrace.join("\n\t")}" 
end 
+0

谢谢Toch。我会尝试并更新... – user2157938 2013-03-15 06:25:48