Почему делают у меня есть к URI.encode даже безопасные символы для Сети:: Запросы HTTP?

Я пытался отправить ПОЛУЧИТЬ запрос к Твиттеру (идентификатор пользователя, замененный по причинам конфиденциальности) использование Сети:: HTTP:

url = URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")
resp = Net::HTTP.get_response(url)

это выдает исключение в Сети:: HTTP:

NoMethodError: неопределенный метод empty?' for #<URI::HTTP:0x59f5c04> from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1470:inинициализируйте'

только по совпадению, я наткнулся на подобный фрагмент кода, который использовал URI.encode до URI.parse, таким образом, я скопировал это и попробовал еще раз:

url = URI.parse(URI.encode("http://api.twitter.com/1/friends/ids.json?user_id=12345"))
resp = Net::HTTP.get_response(url)

теперь это хорошо работает, но почему? Нет никаких зарезервированных символов, для которых нужен выход в URL, который я упомянул, итак, почему я должен звонить URI.encode для get_response успешно выполняться?

6
задан Matthias 11 March 2010 в 09:30
поделиться