どうも、松崎です。 自分でもすっかり忘れておりました。 すみません。 At Thu, 2 Jun 2005 09:28:06 +0900, Takahiro Kambe wrote: > > まあ、明らかにスクリプトの方が仕様外なので仕方ないのです > > (そして連絡しても直してもらえないのです)が、 > > 例外を拾っても救済する方法がわかりませんでした。 > HTTPとしての仕様を満たしていない以上、例外を拾って救済するのはエラー処 > 理をする以上のことはできないわけです。エラーとせずにデータを受け取りた > いなら、http.rbで定義されている内容を元に修正が必要になると思います。 はい、というわけで、 下のように raise HTTPBadResponse を削って 内容を受け取るようにしました。 これだと response の最初2行が闇へ消えてしまうのですが、 今回は HTML 構文解析をするわけではないのでよしとしました。 class << Net::HTTPResponse def read_status_line(sock) str = sock.readline m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)\s*(.*)\z/in.match(str) m ? m.to_a[1,3] : ['', '', ''] end def each_response_header(sock) while true line = sock.readuntil("\n", true).sub(/\s+\z/, '') break if line.empty? m = /\A([^:]+):\s*/.match(line) or break yield m[1], m.post_match end end end -- Motomichi Matsuzaki, PhD <mzaki / biol.s.u-tokyo.ac.jp> Dept. of Biological Sciences, Grad. School of Science, Univ. of Tokyo, Japan