7

我试图使用 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)

这会在 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)

现在它工作正常,但为什么呢?我提到的URL中没有需要转义的保留字符,那为什么我必须调用URI.encode才能get_response成功?

4

1 回答 1

1

Ruby 1.8 get 似乎需要在 uri 末尾使用正斜杠。

“http://www.google.com/”

工作,而

“http://www.google.com”

没有。

于 2012-05-24T15:43:04.413 回答