HTTP-Tiny-0.012 > HTTP::Tiny
Other versions:


HTTP::Tiny - A small, simple, correct HTTP/1.1 client

HTTP::Tiny - 小さく、シンプルで、正しい HTTP/1.1 クライアント


version 0.012

バージョン 0.012


    use HTTP::Tiny;

    my $response = HTTP::Tiny->new->get('');

    die "Failed!\n" unless $response->{success};

    print "$response->{status} $response->{reason}\n";

    while (my ($k, $v) = each %{$response->{headers}}) {
        for (ref $v eq 'ARRAY' ? @$v : $v) {
            print "$k: $_\n";

    print $response->{content} if length $response->{content};


This is a very simple HTTP/1.1 client, designed primarily for doing simple GET requests without the overhead of a large framework like LWP::UserAgent.

これはとてもシンプルな HTTP/1.1 クライアントで、基本的には LWP::UserAgent のような大きなフレームワークのオーバーヘッドなしに 単純な GET リクエストを実行するために設計されています。

It is more correct and more complete than HTTP::Lite. It supports proxies (currently only non-authenticating ones) and redirection. It also correctly resumes after EINTR.

これは HTTP::Lite よりも正しく、完全です。 これはプロキシ (現在のところ認証なしのもののみ) および リダイレクトに対応しています。 また、EINTR の後正しく再開します。



    $http = HTTP::Tiny->new( %attributes );

This constructor returns a new HTTP::Tiny object. Valid attributes include:

このコンストラクタは新しい HTTP::Tiny オブジェクトを返します。 有効な属性は以下のものです:

  • agent

    A user-agent string (defaults to 'HTTP::Tiny/$VERSION')

    ユーザーエージェント文字列 (デフォルトは 'HTTP::Tiny/$VERSION')

  • default_headers

    A hashref of default headers to apply to requests


  • max_redirect

    Maximum number of redirects allowed (defaults to 5)

    リダイレクトの最大数 (デフォルトは 5)

  • max_size

    Maximum response size (only when not using a data callback). If defined, responses larger than this will die with an error message

    最大レスポンスサイズ (データコールバックを使っていない場合のみ)。 定義されると、これより大きなレスポンスはエラーメッセージを出して die します。

  • proxy

    URL of a proxy server to use.

    使うプロキシサーバの URL。

  • timeout

    Request timeout in seconds (default is 60)

    リクエストのタイムアウト秒 (デフォルトは 60)


    $response = $http->get($url);
    $response = $http->get($url, \%options);

Executes a GET request for the given URL. The URL must have unsafe characters escaped and international domain names encoded. Internally, it just calls request() with 'GET' as the method. See request() for valid options and a description of the response.

指定された URL に対して GET リクエストを実行します。 URL は安全な文字をエスケープされていなければならず、国際ドメイン名は エンコードされていなければなりません。 内部としては、単にメソッドを 'GET' として request() を呼び出します。 有効なオプションとレスポンスに関する説明については request() を参照してください。


    $response = $http->mirror($url, $file, \%options)
    if ( $response->{success} ) {
        print "$file is up to date\n";

Executes a GET request for the URL and saves the response body to the file name provided. The URL must have unsafe characters escaped and international domain names encoded. If the file already exists, the request will includes an If-Modified-Since header with the modification timestamp of the file. You may specificy a different If-Modified-Since header yourself in the $options->{headers} hash.

URL に対して GET リクエストを実行し、レスポンス本体を指定された ファイル名に保存します。 URL は安全でない文字はエスケープされていなければならず、 国際ドメイン名はエンコードされていなければなりません。 ファイルが既に存在している場合、リクエストにはそのファイルの変更時刻が If-Modified-Since ヘッダに指定されます。 $options->{headers} ハッシュに異なる If-Modified-Since ヘッダを 指定することもできます。

The success field of the response will be true if the status code is 2XX or 304 (unmodified).

レスポンスの success フィールドは、ステータスコードが 2XX または 304 (unmodified) の場合に真になります。

If the file was modified and the server response includes a properly formatted Last-Modified header, the file modification time will be updated accordingly.

ファイルが変更されていて、サーバレスポンスに適切にフォーマットされている Last-Modified ヘッダが含まれている場合、 ファイル変更時刻はそれに応じて更新されます。


    $response = $http->request($method, $url);
    $response = $http->request($method, $url, \%options);

Executes an HTTP request of the given method type ('GET', 'HEAD', 'POST', 'PUT', etc.) on the given URL. The URL must have unsafe characters escaped and international domain names encoded. A hashref of options may be appended to modify the request.

指定された URL に与えられたメソッド型 ('GET', 'HEAD', 'POST', 'PUT' など) で HTTP リクエストを実行します。 URL は安全でない文字はエスケープされていなければならず、 国際ドメイン名はエンコードされていなければなりません。 オプションのハッシュリファレンスはリクエストを修正するために追加されます。

Valid options are:


  • headers

    A hashref containing headers to include with the request. If the value for a header is an array reference, the header will be output multiple times with each value in the array. These headers over-write any default headers.

    リクエストに含まれるヘッダを含むハッシュリファレンス。 ヘッダの値が配列リファレンスの場合、ヘッダは配列のそれぞれの値で 複数回出力されます。 これらのヘッダはどのようなデフォルトヘッダも上書きします。

  • content

    A scalar to include as the body of the request OR a code reference that will be called iteratively to produce the body of the response

    リクエストの本体を含むスカラ、またはレスポンスの本体を生成するために 繰り返し呼び出されるコードリファレンス

  • trailer_callback

    A code reference that will be called if it exists to provide a hashref of trailing headers (only used with chunked transfer-encoding)

    (chunked transfer-encoding でのみ使われる) 末尾のヘッダの ハッシュリファレンスを提供するために呼び出されるコードリファレンス

  • data_callback

    A code reference that will be called for each chunks of the response body received.


If the content option is a code reference, it will be called iteratively to provide the content body of the request. It should return the empty string or undef when the iterator is exhausted.

content オプションがコードリファレンスの場合、 リクエストの本体を提供するために呼び出されます。 反復子を終わる場合、空文字列か undef を返す必要があります。

If the data_callback option is provided, it will be called iteratively until the entire response body is received. The first argument will be a string containing a chunk of the response body, the second argument will be the in-progress response hash reference, as described below. (This allows customizing the action of the callback based on the status or headers received prior to the content body.)

data_callback オプションが指定されると、 レスポンス本体全体が受信されるまで繰り返し呼び出されます。 最初の引数はレスポンス本体のチャンクを含む文字列で、2 番目の引数は 後述する作業中のレスポンスのハッシュリファレンスです。 (これにより、本体の前に受信した statusheaders を基にして コールバックの動作を変えることができます。)

The request method returns a hashref containing the response. The hashref will have the following keys:

request メソッドはレスポンスを含むハッシュリファレンスを返します。 ハッシュリファレンスには以下のキーを持ちます:

  • success

    Boolean indicating whether the operation returned a 2XX status code

    操作が 2XX ステータスコードを返したかどうかを示す真偽値

  • status

    The HTTP status code of the response

    レスポンスの HTTP ステータス

  • reason

    The response phrase returned by the server


  • content

    The body of the response. If the response does not have any content or if a data callback is provided to consume the response body, this will be the empty string

    レスポンスの本体。 レスポンスに内容がなかったり、レスポンスの本体を処理するための データコールバックが提供された場合、これは空文字列の場合があります。

  • headers

    A hashref of header fields. All header field names will be normalized to be lower case. If a header is repeated, the value will be an arrayref; it will otherwise be a scalar string containing the value

    ヘッダフィールドのハッシュリファレンス。 全てのフィールド名は小文字に正規化されます。 ヘッダが繰り返されている場合、値は配列リファレンスになります; それ以外では値を含むスカラ文字列です。

On an exception during the execution of the request, the status field will contain 599, and the content field will contain the text of the exception.

リクエストの実行中の例外が起きたの場合、status フィールドには 599 が入り、 content フィールドに例外のテキストが入ります。


HTTP::Tiny is conditionally compliant with the HTTP/1.1 specification. It attempts to meet all "MUST" requirements of the specification, but does not implement all "SHOULD" requirements.

HTTP::Tiny は HTTP/1.1 仕様部分的に準拠 しています。 仕様の全ての "MUST" 要求に準拠しようとしていますが、 全ての "SHOULD" 要求は実装していません。

Some particular limitations of note include:


  • HTTP::Tiny focuses on correct transport. Users are responsible for ensuring that user-defined headers and content are compliant with the HTTP/1.1 specification.

    HTTP::Tiny は正しい転送に注目しています。 ユーザはユーザ定義のヘッダと内容が HTTP/1.1 仕様に準拠することに 責任があります。

  • Users must ensure that URLs are properly escaped for unsafe characters and that international domain names are properly encoded to ASCII. See URI::Escape, URI::_punycode and Net::IDN::Encode.

    ユーザは、URL に対して安全でない文字がエスケープされ、国際ドメイン名が 適切に ASCII にエンコードされるようにしなければなりません。 URI::Escape, URI::_punycode, Net::IDN::Encode を参照してください。

  • Redirection is very strict against the specification. Redirection is only automatic for response codes 301, 302 and 307 if the request method is 'GET' or 'HEAD'. Response code 303 is always converted into a 'GET' redirection, as mandated by the specification. There is no automatic support for status 305 ("Use proxy") redirections.

    リダイレクトは仕様に対して非常に厳密です。 リダイレクトは、リクエストメソッドが 'GET' または 'HEAD' の場合、 レスポンスコード 301, 302, 307 の場合にのみ自動的に行われます。 レスポンスコード 303 は、仕様で指定されている通り、 常に 'GET' リダイレクトに変換されます。 ステータス 305 ("Use proxy") リダイレクトの自動対応はしていません。

  • Persistant connections are not supported. The Connection header will always be set to close.

    永続接続は対応していません。 Connection ヘッダは常に close に設定されています。

  • Direct https connections are supported only if IO::Socket::SSL is installed. There is no support for https connections via proxy. Any SSL certificate that matches the host is accepted -- SSL certificates are not verified against certificate authorities.

    直接 https 接続は、IO::Socket::SSL が インストールされている場合にのみ対応します。 プロキシ経由の https 接続は対応していません。 ホストにマッチングする全ての SSL 証明書は受け入れられます -- SSL 証明書の認証局への検証は行われません。

  • Cookies are not directly supported. Users that set a Cookie header should also set max_redirect to zero to ensure cookies are not inappropriately re-transmitted.

    クッキーは直接対応していません。 Cookie ヘッダを設定するユーザは、 クッキーが不適切に再送信されないように max_redirect をゼロに 設定するべきです。

  • Proxy environment variables are not supported.


  • There is no provision for delaying a request body using an Expect header. Unexpected 1XX responses are silently ignored as per the specification.

    Expect ヘッダを使ったリクエストボディの遅延には対応していません。 想定外の1XX レスポンスは、仕様通り暗黙に無視されます。

  • Only 'chunked' Transfer-Encoding is supported.

    'chunked' Transfer-Encoding のみに対応しています。

  • There is no support for a Request-URI of '*' for the 'OPTIONS' request.

    'OPTIONS' リクエストで Request-URI に '*' を指定するのには対応していません。



バグ / 機能リクエスト

Please report any bugs or feature requests by email to bug-http-tiny at, or through the web interface at You will be automatically notified of any progress on the request by the system.

バグや機能リクエストについては、 bug-http-tiny at へのメールか、 の web インターフェースを使って報告してください。 リクエストになんらかの進展があればシステムによって自動的に通知されます。

Source Code

This is open source software. The code repository is available for public review and contribution under the terms of the license.

これはオープンソースソフトウェアです。 コードリポジトリはライセンスの元で公式レビューおよび貢献のために利用可能です。

  git clone git://


  • Christian Hansen <>

  • David Golden <>

コピーライト & ライセンス

This software is copyright (c) 2011 by Christian Hansen.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.