名前¶
HTTP::Tiny - A small, simple, correct HTTP/1.1 client
HTTP::Tiny - 小さく、シンプルで、正しい HTTP/1.1 クライアント
VERSION¶
version 0.012
バージョン 0.012
概要¶
use HTTP::Tiny;
my $response = HTTP::Tiny->new->get('http://example.com/');
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 の後正しく再開します。
メソッド¶
new¶
$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)
get¶
$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()
を参照してください。
mirror¶
$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
ヘッダが含まれている場合、 ファイル変更時刻はそれに応じて更新されます。
request¶
$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 番目の引数は 後述する作業中のレスポンスのハッシュリファレンスです。 (これにより、本体の前に受信した status
や headers
を基にして コールバックの動作を変えることができます。)
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
フィールドに例外のテキストが入ります。
LIMITATIONS¶
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 toclose
.永続接続は対応していません。
Connection
ヘッダは常にclose
に設定されています。 -
Direct
https
connections are supported only if IO::Socket::SSL is installed. There is no support forhttps
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 setmax_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. Unexpected1XX
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 に '*' を指定するのには対応していません。
SEE ALSO¶
サポート¶
バグ / 機能リクエスト¶
Please report any bugs or feature requests by email to bug-http-tiny at rt.cpan.org
, or through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny. You will be automatically notified of any progress on the request by the system.
バグや機能リクエストについては、 bug-http-tiny at rt.cpan.org
へのメールか、 http://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny の web インターフェースを使って報告してください。 リクエストになんらかの進展があればシステムによって自動的に通知されます。
Source Code¶
This is open source software. The code repository is available for public review and contribution under the terms of the license.
これはオープンソースソフトウェアです。 コードリポジトリはライセンスの元で公式レビューおよび貢献のために利用可能です。
http://github.com/dagolden/p5-http-tiny/tree
git clone git://github.com/dagolden/p5-http-tiny.git
作者¶
Christian Hansen <[email protected]>
David Golden <[email protected]>
コピーライト & ライセンス¶
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.