ruby open-uri

Ruby open-uri redirigir prohibido



(3)

Eche un vistazo a la gema open_uri_redirections .

Parchea el OpenURI de Ruby para permitir redirecciones de HTTP a HTTPS o al revés.

Tengo este sencillo analizador html (para fines de aprendizaje) en el que he estado trabajando .:

require ''open-uri'' puts "Enter URL to parse HTML: " url = gets.chomp puts "Enter tag to parse from: " tag = gets.chomp response = open(url).read title1 = response.index(tag) title2 = response.index(tag.insert(1,''/'')) -1 result = response[(title1 + tag.length - 1)..title2] print result

y cuando ingreso http://twitter.com , http://twitter.com este mensaje de error:

ERROR: `open_loop'': redirection forbidden: http://twitter.com -> https://twitter.com/ (RuntimeError) from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'' from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:704:in `open'' from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:34:in `open'' from /home/ubuntu/workspace/htmlparse.rb:6:in `<main>''

¿Algún consejo o ayuda? Soy nuevo en Ruby y conozco otros módulos de análisis html, pero estoy haciendo esto para aprender los principios básicos de Ruby. Gracias.



También puede detectar la excepción y luego intentarlo de nuevo con la URL "https".

url = "http://classic.ona.io/api/v1/files/3538545?filename=gringgo/attachments/1485229166168.jpg" uri = URI.parse(url) tries = 3 begin uri.open(redirect: false) rescue OpenURI::HTTPRedirect => redirect uri = redirect.uri # assigned from the "Location" response header retry if (tries -= 1) > 0 raise end

Fuente: https://twin.github.io/improving-open-uri/