2011-10-17 10 views
8

Ho bisogno di un'applicazione per bloccare una richiesta HTTP quindi ho dovuto aggiungere un paio di righe di codice, l'unico pezzo che non riuscivo a capire era la dichiarazione if uri.scheme == 'https'; http.use_ssl = true c'è un modo per impostare http/https nel conto corrente:Ruby: blocco HTTP.new.start e dinamico HTTP (S)

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 

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

risposta

18

per the documentation, non è possibile chiamare use_ssl= dopo aver avviato la sessione (ad es. dopo start). È necessario impostare prima, ad es .:

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

tenta di modificare il codice per

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

Un errore durante la scrittura del codice qui ... che non sarebbe causare un IOError –

+0

lei non ha citato alcun IOErrors, @JordonBedwell. Hai omesso alcuni dettagli dalla tua domanda? –

+0

@Jordan no Non ho omesso alcun dettaglio, il commento del codice dice "# Cause e IOError ..." e che era molto prima che lo elaborassi, la domanda dovrebbe anche evidenziare il problema. –

Problemi correlati