あおきです。

net/http について、結局どうすればいいの? という問いについて
まとめます。

まず入ってる net/http のバージョンに関係なく使えるのは get2 など
***2 系統です。なので、ちょっとしたものを作りたくて、しばらくたって
いきなり動作が変わったりすると困るという場合は以下のコードが使えます。

(とにかく取れればいい)

  require 'net/http'

  Net::HTTP.version_1_1
  http = Net::HTTP.new(addr, port)    # スレッドセーフじゃないなあ…
               :
  http.start {
    response = http.get2( path )
  }

(ヘッダも欲しい)

  require 'net/http'

  Net::HTTP.version_1_1
  http = Net::HTTP.new(addr, port)
               :
  http.start {
    response = http.get2( path ) {|r|   # r のクラスは不定、でも挙動は同じ
      r.response['content-length']      # r.response は常に HTTPResponse
      r.read_body
      r.body
    }
    response.body
  }

この方法が当分のあいだ使えることは保証します。前回のメールで
「get2 はあんまり…」とか言いましたが、結局これが一番安定してる
ので、この方法がいいと思います。

今後の方針としては、できるだけ早く 1.2 の仕様を固めてそれに移行
してしまい、あとはそれで通すってのが理想です。仕様固めの時期と
しては本当に最悪でも Ruby 1.8.0 が出る前、可能ならば春が終わる
までを考えています。たいして大きい仕様ではないので、たぶんそれで
いくでしょう。
-------------------------------------------------------------------
青木峰郎