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

Below my suggestion. Ideally, put it in a separated module.

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 に答える