2012-04-06 21 views
6

मैं रूबी 1.9.3 का उपयोग कर और open-uri उपयोग करने के लिए एक यूआरएल प्राप्त करने की कोशिश और दोनों के लिए प्रॉक्सी प्रमाणीकरण का उपयोग करने की कोशिश कर Net:HTTPरूबी प्रॉक्सी प्रमाणीकरण OpenURI या नेट/http

इम का उपयोग कर पोस्ट करने का प्रयास कर रहा हूँ के साथ प्राप्त/पोस्ट:

require 'net/http' 
require 'open-uri' 
http = Net::HTTP.new("google.com", 80) 
headers = { 'User-Agent' => 'Ruby 193'} 

resp, data = http.post("/", "name1=value1&name2=value2", headers) 
puts data 

और open-uri जिसके लिए मैं POST करने के लिए नहीं मिल सकता है मैं का उपयोग करें::

net/http के साथ एक POST अनुरोध करने के लिए कोशिश कर रहा

data = open("http://google.com/","User-Agent"=> "Ruby 193").read 

मैं कैसे

मैं कोशिश की है (खुले uri के लिए) HTTP प्रमाणीकरण के साथ एक प्रॉक्सी का उपयोग करने

data = open("http://google.com/","User-Agent"=> "Ruby 193", :proxy_http_basic_authentication => ["http://proxy.com:8000/", "proxy-user", "proxy-password"]).read 

हालांकि सभी मैं मिल जाएगा एक OpenURI::HTTPError: 407 Proxy Authentication Required है इन संशोधित करेगा। मैंने सभी को सत्यापित कर लिया है और यह ब्राउज़र में समान प्रमाणीकरण और प्रॉक्सी विवरण के साथ काम करता है लेकिन मुझे ऐसा करने के लिए रूबी नहीं मिल सकती है।

मैं http प्रमाणीकरण को सही तरीके से जोड़ने के लिए ऊपर दिए गए कोड को कैसे संशोधित करूं? क्या कोई इस अत्याचार से गुजर चुका है?

उत्तर

14

प्रयास करें:

require "open-uri" 
proxy_uri = URI.parse("http://proxy.com:8000") 

data = open("http://www.whatismyipaddress.com/", :proxy_http_basic_authentication => [proxy_uri, "username", "password"]).read 
puts data 

Net :: HTTP के लिए के रूप में, मैं हाल ही में http प्रमाणीकरण के साथ प्रॉक्सी के लिए समर्थन एक Net :: HTTP में आवरण पुस्तकालय http कहा जाता है को लागू किया। यदि आप मेरा आखिरी पुल-अनुरोध देखते हैं, तो आप मूल कार्यान्वयन देखेंगे।

संपादित करें: उम्मीद है कि यह आपको सही दिशा में आगे बढ़ेगा।

Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"username","password").start('whatismyipaddress.com') do |http| 
    puts http.get('/').body 
end 
संबंधित मुद्दे