Ipprova kandidati tal-proxy b'klijenti Ruby Net::HTTP separati
Oħloq istanza Net::HTTP waħda għal kull kandidat tal-proxy u waqaf skont ir-risposta li l-operazzjoni tiegħek tassew teħtieġ.
Lista ta' proxies issir utli biss meta kull tentattiv joħloq klijent konfigurat għal dak il-punt finali. Għal GET permezz ta' proxies HTTP mingħajr awtentikazzjoni, Net::HTTP jista' jintuża hekk:
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
endIr-raba' argument jagħżel il-port tal-proxy; uri.host u uri.port għadhom jidentifikaw id-destinazzjoni. Imla ż-żewġ entrati tal-eżempju mil-lista tal-proxies HTTP meta tiċċekkja URL pubbliku permess permezz ta' punti finali HTTP mingħajr awtentikazzjoni. request_uri iżomm il-mogħdija u l-mistoqsija tiegħu. L-eżempju jimmaniġġja fallimenti ordinarji tal-konnessjoni u tal-qari u jirreġistra status HTTP meta jasal wieħed.
Hawnhekk kwalunkwe risposta 2xx ttemm it-tfittxija. Jekk l-operazzjoni tiegħek tistenna riżultat ieħor, iddefinixxi dak il-kriterju b'mod espliċitu. Ridirezzjoni ma tipprovax awtomatikament li l-paġna mixtieqa nġabret.
Żomm ir-ripetizzjoni awtomatika xierqa għall-metodu. POST li jiskadi wara li jintbagħat il-korp tiegħu jista' jkun diġà bidel l-applikazzjoni remota; tentattiv mill-ġdid permezz ta' proxy ieħor jista' jirrepeti dak l-effett. L-eżempju GET ma jwiegħedx ripetizzjoni sigura ta' tranżazzjonijiet arbitrarji.