HTTP Out - HTTP によるファイル取得と標準出力への出力 WEBサーバからファイルを取得し、標準出力に出力します。 ■前口上 先日、受信したメールを標準出力に出力するというツールを作成しま した。調子に乗って、HTTP で取得したファイルを標準出力に出力するツ ールも作ってしまいました。 ■動作環境 Windows95/98/SE/ME/NT/2K/XP で動作すると思われます。 ただし、テストは WindowsME/2K でしか行われておりません。 コンパイルは Delphi4 Standard で行われております。 なお、レジストリは一切使っておりませんので、単にファイルを削除す るだけでアンインストール可能です。 ■使用法 Usage: HTTPOut [options] 32ビットな Windows 用のコマンドラインツールです。 WEBサーバにファイルを取りにいき、取得したファイルを標準出力 に出力します。当然、リダイレクションでファイルに保存することもで きます。なお、-o オプションを指定しない場合、結果は BASE64 でエン コードして出力しますので、別途利用者の責任においてデコードを実施 してください。 オプションは大文字小文字を区別します。 現在、下記のオプションが有効です。 ・ -url : URL -url に続いてURL形式でサーバーとファイル名を指定します。 例:-url http://www.google.co.jp/index.html ・ -user : アカウント -user に続いてサーバのアカウントを指定します。 これは BASIC 認証のときのみ有効です。 例:-user toshiki ・ -pass : パスワード -pass に続いてパスワードを指定します。 これは BASIC 認証のときのみ有効です。 例:-pass password ・ -post : Post メソッド使用 -post に続いて指定したファイルから読み込んだ内容を Post メ ソッドでサーバに送信します。掲示板への書き込みなどに使える かもしれません。 例:-post c:\pad.txt ・ -proxysrv : プロキシサーバー名 -proxysrv に続いて指定したサーバーを経由して目的のURLに アクセスします。 例:-proxysrv 192.168.0.1 ・ -proxyport : プロキシポート番号 -proxyport に続いて指定した数字をプロキシのポート番号として 使用します。 例:-proxyport 8080 ・ -ref : REFERER 指定 -ref に続いて指定した文字列をHTTPリクエスト時の REFERER として使用します。 例:-ref http://www.google.co.jp/ ・ -o : 出力ファイル名指定 -o に続いて指定したファイル名に、サーバから取得した結果を、 BASE64 でエンコードせずに出力します。 このオプションを指定しない場合、BASE64 でエンコードしたもの を標準出力に出力します。 例:-o c:\index.html ・ -text : テキスト出力指定 -text を指定すると、上記 -o オプションを指定していない場合 で、かつ、サーバから取得したファイルがテキストであった場合 に限り、標準出力に BASE64 でエンコードせずにテキストのまま で出力します。サーバから取得したファイルがテキストであるか どうかの判定は、HTTPヘッダの Content-Type に text の文 字列があるかどうかで行っておりますので、サーバが正しくない MIME Type を返してきた場合には誤動作します。また、仮に正し い MIME Type であったとしても、quoted-printable を始めとする 様々なエンコード方式や文字コードなどがあるので、必ずしも人 間に読める形式で出力されるとは限りません。 このオプションは引数をとりません。 ・ -i : 設定ファイル指定 このオプションで指定した ini ファイルの [HTTPOUT] セクショ ンからURL等のオションを読み取ります。このオプションを指 定しないときには、コマンドラインで少なくともURLは指定し なければなりません。 以下は ini ファイルの記述例です。 [HTTPOUT] URL=http://www.google.co.jp/index.html USER=ABC12345 PASSWORD=mypass POSTFILE=c:\pad.txt OUTFILE=c:\index.html TEXT=TRUE REFERER=http://www.google.co.jp/ PROXYSERVER=192.168.0.1 PROXYPORT=8080 ■エラーレベル -post オプションで指定したファイルの読み込みに失敗した場合、エ ラーレベルに 1 を返します。 指定した URL のファイルを正常に取得できなかった場合、エラーレベ ルに 2 を返します。 正しくファイルを出力できなかったときには、エラーレベルに 3 を返 します。 HTTP による一連のシーケンスが全て正常に完了し、ファイルの出力が 成功した場合、エラーレベルに 0 を返します。 ■著作権、再配布等 一応、著作権は主張させていただきます。以下、本プログラム、およ びドキュメントを総称して「本プログラム等」と表します。 ・本プログラム等の著作権は としき が有します。 ・本プログラム等を使用することにより、使用者の予期しない影響が あっても、作者はなんらの保証および補償をいたしません。 ・本プログラム等の転載、再配布、販売等は、事前に著作権者の許可 を求めなければ、自由にできます。 ^^^^^^^^^^^^ ただし、事前に許可を求められた場合は、原則として全てお断りい たします。なお、事後報告は歓迎いたします。 ^^^^^^^^^^ もちろん書籍、雑誌、CD−ROMへの収録も自由です。 なお、転載等を長期間継続するような場合でも、定期的な連絡・報 告などは不要です。また、1つのバージョンについて1ヶ所の転載 先に対し3回以上連絡があった場合、当該バージョンの転載中止を 要請することがあります。 ・著作者人格権の同一性保持権に基づき、本プログラム等の改変を自 由に行うことを許可します。というよりも、積極的な改変をお願い いたします。 ただし、改変した本プログラム等では、著作者人格権の氏名表示権 に基づき、原作者の著作権表示を消去することを要請します。 なお、差し支えなければ改変した部分をご連絡いただければ、次の バージョンからその改変内容を反映させていただきたいと思います。 ・転載等の際は、入手した本プログラム等のファイル構成に対し変更 を加えずに再配布してください。ただし、本プログラム等に改変を 加えた場合はこの限りではありません。 ・作者は、このプログラムに不備があっても、それを訂正する義務を 負いません。しかし、努力はするでしょうから連絡をお願いします。 ・仕様拡張に関する意見は、私の技術と体力と気力が許す範囲で対応 したいと思います。 ■謝辞 post メソッドの使用に際し、多大な示唆を頂いた あじゃ さんに感 謝いたします。 REFERER の使用に際し、多大な示唆を頂いた konno さんに感謝いた します。 ■改版履歴 version 1.00 2004-04-05 ・とりあえず動く version 1.10 2004-08-15 ・-o オプション追加 version 1.20 2004-11-15 ・-post オプション追加 version 1.30 2005-03-20 ・きちんとエラーレベルを返すようにした version 1.40 2005-05-01 ・-text オプション追加 version 1.50 2006-07-01 ・-proxysrv -proxyport -ref オプション追加 ・-user -pass オプション名変更 ・ドキュメントの誤り修正。この機能、誰も使っていないのかな version 1.60 2008-05-24 ・URL未指定時の挙動を改善 ・Location: レスポンスが返ってきた場合にきちんと移動先を表示 するようにした