2011-10-17 9 views
8

Necesito una aplicación para bloquear una solicitud HTTP, así que tuve que agregar un par de líneas de código, la única pieza que no pude entender fue la declaración if uri.scheme == 'https'; http.use_ssl = true es que hay alguna manera de configurar HTTP/HTTPS en el estado de cuenta actual:Ruby: Bloqueo HTTP.new.start y HTTP dinámico (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 

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

Respuesta

18

por the documentation, no puede llamar al use_ssl= después de iniciar la sesión (es decir después de start). Usted tiene que fijar antes, por ejemplo .:

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

tratar de cambiar su código para

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 error al escribir el código de aquí ... que no causaría un IOError –

+0

usted no mencionó ningún IOErrors, @JordonBedwell. ¿Olvidaste algunos detalles de tu pregunta? –

+0

@Jordan no No dejé ningún detalle, el comentario del código dice "# Causes and IOError ..." y eso fue mucho antes de que lo elaborara, la pregunta también debería resaltar el problema. –

Cuestiones relacionadas