Stavo cercando di inviare una richiesta GET a Twitter (ID utente sostituito per motivi di privacy) utilizzando Net :: HTTP:Perché devo URI.encode anche caratteri sicuri per le richieste Net :: HTTP?
url = URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")
resp = Net::HTTP.get_response(url)
questo genera un'eccezione in 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'
solo per coincidenza, sono incappato in un frammento di codice simile, che ha usato URI.encode
prima URI.parse
, così ho copiato questo e riprovato:
url = URI.parse(URI.encode("http://api.twitter.com/1/friends/ids.json?user_id=12345"))
resp = Net::HTTP.get_response(url)
ora funziona bene, ma perché? Non ci sono caratteri riservati che devono essere salvati nell'URL che ho menzionato, quindi perché devo chiamare URI.encode
per il get_response
per avere successo?
Provo il tuo primo codice e funziona per me – shingara
Il tuo primo snippet di codice funziona in modo pacifico almeno in Ruby 1.9.1. – anshul
Puoi includere il tuo ambiente (versione Ruby e sistema operativo)? Il tuo codice iniziale funziona anche per me. –