Proovi puhverserveri kandidaate eraldi Ruby Net::HTTP klientidega
Loo iga puhverserveri kandidaadi jaoks üks Net::HTTP eksemplar ja peatu vastavalt vastusele, mida sinu toiming tegelikult vajab.
Puhverserverite loend muutub kasulikuks alles siis, kui iga katse loob selle lõpp-punkti jaoks seadistatud kliendi. Autentimata HTTP-puhverserverite kaudu GET-i tegemiseks saab Net::HTTP-d kasutada nii:
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
endNeljas argument valib puhverserveri pordi; uri.host ja uri.port tähistavad endiselt sihtkohta. Täida kaks näidisrida HTTP-puhverserverite loendist, kui kontrollid lubatud avalikku URL-i autentimata HTTP-lõpp-punktide kaudu. request_uri säilitab oma tee ja päringu. Näide käsitleb tavapäraseid ühendus- ja lugemisvigu ning märgib HTTP oleku, kui see saabub.
Siin lõpetab iga 2xx vastus otsingu. Kui sinu toiming ootab teistsugust tulemust, määratle see kriteerium selgelt. Ümbersuunamine ei tõesta automaatselt, et soovitud leht on hangitud.
Hoia automaatne kordamine meetodile sobiv. POST, mis aegub pärast keha saatmist, võib olla kaugrakendust juba muutnud; uus katse teise puhverserveri kaudu võib selle mõju korrata. GET-i näide ei luba suvaliste tehingute turvalist kordamist.