2011-10-17 14 views
8

Bir HTTP isteğini engellemek için bir uygulamaya ihtiyacım var, bu yüzden birkaç satır kod eklemek zorunda kaldım.Ruby: HTTP.new.start ve dinamik HTTP (S) Engelleme

Net::HTTP.new(uri.host, uri.port).start do |http| 

    # Causes and IOError... 
    if uri.scheme == 'https' 
    http.use_ssl = true 
    end 

    request = Net::HTTP::Get.new(uri.request_uri) 
    http.request(request) 
end 

eklendi: IOError: use_ssl value changed, but session already started

cevap

18

için kodunuzu değiştirmek için if uri.scheme == 'https'; http.use_ssl = true geçerli açıklamada http/https ayarlayabileceğiniz bir yol yoktur, oturumu başlattıktan sonra use_ssl= numaralı telefonu arayamazsınız (örn. start'dan sonra). Burada kod yazarken

http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true if uri.scheme == 'https' 

http.start do |h| 
    h.request Net::HTTP::Get.new(uri.request_uri) 
end 
4

TryBaşına

http = Net::HTTP.new(uri.host, uri.port) 

if uri.scheme =='https' 
    http.use_ssl = true 
end 

http.start do 
    request = Net::HTTP::Get.new(uri.request_uri) 
    puts http.request(request) 
end 
+0

.: Daha önce bir hata örn ayarlamak zorunda ... bu bir IOError –

+0

Sen @JordonBedwell herhangi IOErrors söz etmedi neden olmaz. Sorunuzdan bazı ayrıntılar bıraktın mı? –

+0

@Jordan hayır Ayrıntılardan hiçbirini ayırmadım, kod yorumu "# Causes and IOError ..." yazıyordu ve bunu detaylandırmadan çok önceydi, soru da konuyu vurgulamalıydı. –