Uhlu lwama-proxy lusiza kuphela lapho umzamo ngamunye wenza iklayenti elilungiselelwe leyo ndawo yokugcina. Ukuze wenze i-GET ngama-proxy e-HTTP angenakho ukuqinisekiswa, i-Net::HTTP ingasetshenziswa kanje:

require 'net/http'

uri = URI('https://www.example.com/status')
proxies = ['http://proxy-a.example:8080',
           'http://proxy-b.example:8080']

proxies.each do |value|
  proxy = URI(value)
  http = Net::HTTP.new(uri.host, uri.port, proxy.host, proxy.port)
  http.use_ssl = uri.scheme == 'https'
  http.open_timeout = 5
  http.read_timeout = 10
  begin
    response = http.get(uri.request_uri)
    puts "#{proxy.host}:#{proxy.port} #{response.code}"
    break if response.is_a?(Net::HTTPSuccess)
  rescue Net::OpenTimeout, Net::ReadTimeout, SocketError, SystemCallError, IOError => error
    warn "#{proxy.host}:#{proxy.port} #{error.class}"
  end
end

I-agumenti yesine ikhetha imbobo ye-proxy; i-uri.host ne-uri.port zisakhomba indawo okuyiwa kuyo. Gcwalisa amabhuku amabili esibonelo asuka ohlwini lwama-proxy e-HTTP lapho uhlola i-URL yomphakathi evunyelwe ngamaphoyinti okugcina e-HTTP angenakho ukuqinisekiswa. I-request_uri igcina indlela yayo nombuzo. Isibonelo sibhekana nokwehluleka okuvamile kokuxhumana nokufunda futhi sibhala isimo se-HTTP lapho kufika esinye.

Lapha noma iyiphi impendulo engu-2xx iqeda ukusesha. Uma umsebenzi wakho ulindele omunye umphumela, chaza leso bhalansi ngokucacile. Ukudluliswa kabusha akufakazeli ngokuzenzakalela ukuthi ikhasi elifisekayo latholakele.

Gcina ukuphindaphinda okuzenzakalelayo kuhambisana nendlela. I-POST ephelelwa isikhathi ngemva kokuthunyelwa komzimba wayo kungenzeka isivele yashintsha uhlelo olukude; ukuzama futhi ngenye i-proxy kungaphinda lowo mphumela. Isibonelo se-GET asithembisi ukudlala kabusha okuphephile kwemisebenzi engafuneki.

Izihloko ezihlobene