ລອງໃຊ້ຜູ້ສະໝັກພຣັອກຊີດ້ວຍ Ruby Net::HTTP ລູກຄ້າແຍກຕ່າງຫາກ
ສ້າງ Net::HTTP ໜຶ່ງອັນສຳລັບແຕ່ລະຜູ້ສະໝັກພຣັອກຊີ ແລະ ຢຸດຕາມການຕອບສະໜອງທີ່ການດຳເນີນງານຂອງທ່ານຕ້ອງການຕົວຈິງ.
ລາຍຊື່ພຣັອກຊີຈະມີປະໂຫຍດກໍ່ຕໍ່ເມື່ອແຕ່ລະຄັ້ງສ້າງລູກຄ້າທີ່ຕັ້ງຄ່າສຳລັບຈຸດປາຍນັ້ນ. ສຳລັບ GET ຜ່ານພຣັອກຊີ HTTP ທີ່ບໍ່ມີການພິສູດຕົວຕົນ Net::HTTP ສາມາດໃຊ້ໄດ້ດັ່ງນີ້:
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ອາກູເມັນທີສີ່ເລືອກພອດພຣັອກຊີ; uri.host ແລະ uri.port ຍັງຊີ້ບອກປາຍທາງ. ຕື່ມສອງລາຍການຕົວຢ່າງຈາກລາຍຊື່ພຣັອກຊີ HTTP ເມື່ອກວດສອບ URL ສາທາລະນະທີ່ອະນຸຍາດຜ່ານຈຸດປາຍ HTTP ທີ່ບໍ່ມີການພິສູດຕົວຕົນ. request_uri ຮັກສາເສັ້ນທາງ ແລະ ຄຳຖາມ. ຕົວຢ່າງຈັດການຄວາມຜິດພາດການເຊື່ອມຕໍ່ ແລະ ການອ່ານປົກກະຕິ ແລະ ບັນທຶກສະຖານະ HTTP ເມື່ອມີມາ.
ທີ່ນີ້ການຕອບສະໜອງ 2xx ໃດໆກໍ່ສິ້ນສຸດການຄົ້ນຫາ. ຖ້າການດຳເນີນງານຂອງທ່ານຄາດຫວັງຜົນອື່ນ ໃຫ້ກຳນົດເງື່ອນໄຂນັ້ນຢ່າງຊັດເຈນ. ການປ່ຽນເສັ້ນທາງບໍ່ໄດ້ພິສູດໂດຍອັດຕະໂນມັດວ່າໄດ້ຮັບໜ້າທີ່ຕ້ອງການແລ້ວ.
ຮັກສາການເຮັດຊ້ຳອັດຕະໂນມັດໃຫ້ເໝາະກັບວິທີ. POST ທີ່ໝົດເວລາຫຼັງຈາກສົ່ງຕົວໄປແລ້ວອາດປ່ຽນແອັບພລິເຄຊັນທາງໄກໄປແລ້ວ; ການລອງອີກຄັ້ງຜ່ານພຣັອກຊີອື່ນອາດເຮັດໃຫ້ຜົນນັ້ນເກີດຊ້ຳ. ຕົວຢ່າງ GET ບໍ່ໄດ້ສັນຍາວ່າຈະຫຼິ້ນທຸລະກຳໃດໆຄືນຢ່າງປອດໄພ.