4

HTTP 接続を閉じる適切な方法を探していましたが、まだ何も見つかりませんでした。

require 'net/http'
require 'uri'

uri = URI.parse("http://www.google.com")

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new("/")


http.start
resp = http.request request

p resp.body

これまでのところは順調ですが、使用する方法を推測して接続を閉じようとすると、次のようになります。

http.shutdown   # error
http.close      # error

を確認するri Net::HTTP.startと、ドキュメントには明示的に記載されています

呼び出し元は、完了時にそれ (接続) を閉じる責任があります

ブロックフォームを使用したくありません。

4

2 に答える 2

9

接続を閉じる方法はhttp.finish.

net/httpAPIの使用は特に混乱を招きます。HTTPartyREST Clientなどの上位レベルのライブラリを使用する方が一般的に簡単です。これにより、より直感的な API が提供され、下位レベルの詳細が処理されます。

于 2012-11-10T16:32:04.363 に答える
2

オプションのブロックが指定されている場合、新しく作成されたNet :: HTTPオブジェクトがそれに渡され、ブロックが終了すると閉じられます。

ruby-doc.orgから

于 2012-11-10T16:29:23.267 に答える