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 仕事場