0

我的 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)

请建议一种方法来处理基于网络的同一块中的代码是在代理还是无代理。

4

1 回答 1

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
于 2013-03-14T09:11:53.887 回答