In message <ufywcrkj7.wl%mzaki / biol.s.u-tokyo.ac.jp> on Tue, 24 May 2005 19:22:17 +0900, Motomichi Matsuzaki <mzaki / e-mail.ne.jp> wrote: > Net::HTTP を使って CGI へクエリを投げ込むスクリプトを組んでいますが、 > ターゲットの CGI スクリプトが困った仕様になっていて、 > nph- スクリプトなのに HTTP ステータスラインを生成しません。 それらの動作環境(OSの種類やバージョン)は何なのでしょうか。 > % telnet hogehoge.jp 80 > GET /cgi-bin/nph-query HTTP/1.0 > > <HTML> # 本来この行の前に HTTP/1.0 200 OK などと入るべき 問題はCGIスクリプトというよりも、Webサーバの設定を含めた問題だったりす ることはないのでしょうか。 > <HEAD><TITLE>.....</TITLE></HEAD> > : > : > % > > という具合の挙動をします。 たいへん後ろ向きな解決策としては、Webサーバへのリクエストと応答の処理 を、別のwrapperなスクリプトで行うという手段もありそうに思えます。Webク ライアントの動作環境によっては困難でしょうけれど。 > /usr/local/lib/ruby/1.8/net/http.rb:1556:in `read_status_line': wrong status line: "<HTML>" (Net::HTTPBadResponse) > from /usr/local/lib/ruby/1.8/net/http.rb:1538:in `read_new' > from /usr/local/lib/ruby/1.8/net/http.rb:833:in `request' > from /usr/local/lib/ruby/1.8/net/http.rb:690:in `post' > from ./query.rb:80 > > という具合に例外で落ちてしまいます。 > # Net::HTTP.request は「 HTTP 関連の例外を発生させない」と書いてありますが… ドキュメントが正しくないということでしょう。;-p > まあ、明らかにスクリプトの方が仕様外なので仕方ないのです > (そして連絡しても直してもらえないのです)が、 > 例外を拾っても救済する方法がわかりませんでした。 HTTPとしての仕様を満たしていない以上、例外を拾って救済するのはエラー処 理をする以上のことはできないわけです。エラーとせずにデータを受け取りた いなら、http.rbで定義されている内容を元に修正が必要になると思います。 -- 神戸 隆博(かんべ たかひろ) at 仕事場