Mat*_*ias 6 ruby http url-encoding
我试图使用Net :: HTTP向Twitter发送GET请求(因隐私原因而替换用户ID):
url = URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")
resp = Net::HTTP.get_response(url)
Run Code Online (Sandbox Code Playgroud)
这会在Net :: 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)
Run Code Online (Sandbox Code Playgroud)
现在它工作正常,但为什么?有迹象表明,需要在逃避我提到的网址没有保留字符,所以为什么我要调用URI.encode的get_response成功吗?
Ruby 1.8 get 似乎需要在 uri 末尾添加正斜杠。
“http://www.google.com/”
工作,同时
“http://www.google.com”
没有。