7

Net::HTTP を使用して、GET 要求を Twitter に送信しようとしました (プライバシー上の理由からユーザー 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.encodeget_response

4

1 に答える 1

1

Ruby 1.8 getは、URIの最後にスラッシュを必要とするようです。

「http://www.google.com/」

働いている間

「http://www.google.com」

しませんでした。

于 2012-05-24T15:43:04.413 に答える