សាកល្បងបេក្ខជនប្រូកស៊ីដោយអតិថិជន 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 មិនសន្យាការចាក់ឡើងវិញដោយសុវត្ថិភាពនៃប្រតិបត្តិការណាមួយទេ។