HTTP-easyDown

なにこれ?

ファイルをダウンロードするプログラムです。 Dで通信してみたかったのでなんとなく作ってみました。
※ネムぃに同梱するかも。

使い方

CUIベースなんでプロンプトとかから呼び出してください。 オプションは下記の通り。

--host
IPアドレスもしくはホスト名を指定。
IPv6未対応。
--path
ホストに要求するパス。
未指定ならば"/"を使用。
--user
必要ならば接続ユーザー名。
--pass
ユーザー名に対応するパスワード。
--ua
User-Agent。
未指定ならばHTTP-easyDown/versionを使用。
--lang
Accept-Language。
--s_head
標準出力へヘッダ書き出し。
--s_body
標準出力へボディ書き出し。
--f_head
ファイルへヘッダ書き出し。
--f_body
ファイルへボディ書き出し。
--output
出力ファイル。
f_headとf_bodyのどちらかが指定されていた場合に有効。
--retry
再接続回数。
未指定なら0回。
--wait
待機時間(ms)
取得停止から待機する時間。未指定なら500ms。
--size
Range。
取得サイズ。サーバーによりけり。
--buf
読み込みブロックサイズ
未指定ならば1024byte。
--post
GET(このプログラムではダウンロード用途にしか使ってない)ではなくPOSTでサーバーにリクエストを投げる
未指定ならばGET。
--data
POSTで送るファイルまたは値
dataがファイルならそのファイルの内容、ファイルが見つからない場合は文字列を使用。

仮にhttp://www.abc.def/index.htmlというURIがあったとします。

とりあえず試す
> httpeasydown --host=www.abc.def --path=index.html

標準出力にレスポンスhttpヘッダを表示
> httpeasydown --host=www.abc.def --path=index.html --s_head
HTTP/1.1 200 OK
Date: ***, - *** ---- --:--:-- GMT
Server: Apache
Last-Modified: ***, - *** ---- --:--:-- GMT
ETag: "------------"
Accept-Ranges: bytes
Content-Length: ---
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

標準出力にレスポンスhttpボディを表示
> httpeasydown --host=www.abc.def --path=index.html --s_body
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
	<head>
		<title>www.abc.def</title>
	</head>
	<body>
		<h1>www.abc.def</h1>
		<p>
			hello, world.
		</p>
	</body>
</html>

ファイル(abc.html)にレスポンスhttpボディを書き出し
> httpeasydown --host=www.abc.def --path=index.html --f_body --output=abc.html

オプション表示
> httpeasydown
HTTP-easyDown 1.00
-------------------------------------------------------------------------------
--host="..."    The host name or IP address. Not compatible with IPv6.
--path=/        Demand a path to the host. If unspecified "/".
--port=80       The destination port number. If you use unspecified 80.
--user="?"      If necessary connection users name.
--pass="?"      Password for the user name.
--ua="?"        User-Agent. If unspecified "HTTPGet/version"
--lang="?"      Accept-Language. If necessary
--s_head        Export standard output to the header.
--s_body        Export standard output to the body.
--f_head        Export to a file header.
--f_body        Export to a file body.
--output=<...>  "f_head" or "f_body" in the case of output file name.
--retry=0       Number of reconnecting.
--wait=500      Waiting time(ms).If unspecified 500ms.
--size="?"      Range.
--buf=1024      Read block size. If unspecified 1024byte
-------------------------------------------------------------------------------
Thank you, google translation. http://translate.google.co.jp/translate_t?hl=ja#
				

バグとか仕様とか

著作権とか

すきにして。 明記が必要ならNYSLってことで。