yo estaba tratando de enviar una petición GET a Twitter (ID de usuario reemplazado por razones de privacidad) usando Net :: HTTP:¿Por qué tengo que URI.encode incluso los caracteres seguros para las solicitudes Net :: HTTP?
url = URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")
resp = Net::HTTP.get_response(url)
Esto arroja una excepción en Net :: HTTP:
NoMethodError: undefined method
empty?' for #<URI::HTTP:0x59f5c04> from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1470:in
initialize'
simplemente por casualidad, me topé con un fragmento de código similar, que utiliza URI.encode
URI.parse
antes, por lo que he copiado y lo intentó de nuevo:
url = URI.parse(URI.encode("http://api.twitter.com/1/friends/ids.json?user_id=12345"))
resp = Net::HTTP.get_response(url)
ahora funciona bien, pero ¿por qué? No hay caracteres reservados que necesiten escaparse en la URL que mencioné, entonces ¿por qué tengo que llamar al URI.encode
para obtener el get_response
para tener éxito?
que probar su primer código y es que funciona para mí – shingara
Su primer fragmento de código funciona con toda tranquilidad en Ruby 1.9.1 como mínimo. – anshul
¿Podría incluir su entorno (versión de Ruby y sistema operativo)? Tu código inicial también funciona para mí. –