名前¶
HTTP::Tiny - A small, simple, correct HTTP/1.1 client
HTTP::Tiny - 小さく、シンプルで、正しい HTTP/1.1 クライアント
VERSION¶
version 0.017
バージョン 0.017
概要¶
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 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 return an exception.
最大レスポンスサイズ (データコールバックを使っていない場合のみ)。 定義されると、これより大きなレスポンスは例外を返します。
proxy
URL of a proxy server to use (default is
$ENV{http_proxy}
if set)使うプロキシサーバの URL (デフォルトは、設定されていれば
$ENV{http_proxy}
)。timeout
Request timeout in seconds (default is 60)
リクエストのタイムアウト秒 (デフォルトは 60)
Exceptions from max_size
, timeout
or other errors will result in a pseudo-HTTP status code of 599 and a reason of "Internal Exception". The content field in the response will contain the text of the exception.
max_size
, timeout
からの例外やその他のエラーは疑似 HTTP ステータスコード 599 と理由 "Internal Exception" を返します。 レスポンスの content フィールドは例外のテキストを含みます。
get|head|put|post|delete¶
$response = $http->get($url);
$response = $http->get($url, \%options);
$response = $http->head($url);
These methods are shorthand for calling request()
for the given method. The URL must have unsafe characters escaped and international domain names encoded. See request()
for valid options and a description of the response.
これらのメソッドは、指定されたメソッドで request()
を呼び出す省略形です。 URL は安全な文字をエスケープされていなければならず、国際ドメイン名は エンコードされていなければなりません。 有効なオプションとレスポンスに関する説明については request()
を参照してください。
The success
field of the response will be true if the status code is 2XX.
レスポンスの success
フィールドは、ステータスコードが 2XX の場合に 真になります。
post_form¶
$response = $http->post_form($url, $form_data);
$response = $http->post_form($url, $form_data, \%options);
This method executes a POST
request and sends the key/value pairs from a form data hash or array reference to the given URL with a content-type
of application/x-www-form-urlencoded
. See documentation for the www_form_urlencode
method for details on the encoding.
This method executes a POST
request and sends the key/value pairs from a form data hash or array reference to the given URL with a content-type
of application/x-www-form-urlencoded
. See documentation for the www_form_urlencode
method for details on the encoding. (TBT)
The URL must have unsafe characters escaped and international domain names encoded. See request()
for valid options and a description of the response. Any content-type
header or content in the options hashref will be ignored.
The URL must have unsafe characters escaped and international domain names encoded. See request()
for valid options and a description of the response. Any content-type
header or content in the options hashref will be ignored. (TBT)
The success
field of the response will be true if the status code is 2XX.
レスポンスの success
フィールドは、ステータスコードが 2XX の場合に 真になります。
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 specify 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 if the status code is 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
フィールドに例外のテキストが入ります。
www_form_urlencode¶
$params = $http->www_form_urlencode( $data );
$response = $http->get("http://example.com/query?$params");
This method converts the key/value pairs from a data hash or array reference into a x-www-form-urlencoded
string. The keys and values from the data reference will be UTF-8 encoded and escaped per RFC 3986. If a value is an array reference, the key will be repeated with each of the values of the array reference. The key/value pairs in the resulting string will be sorted by key and value.
This method converts the key/value pairs from a data hash or array reference into a x-www-form-urlencoded
string. The keys and values from the data reference will be UTF-8 encoded and escaped per RFC 3986. If a value is an array reference, the key will be repeated with each of the values of the array reference. The key/value pairs in the resulting string will be sorted by key and value. (TBT)
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") リダイレクトの自動対応はしていません。
-
Persistent 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
をゼロに 設定するべきです。 -
Only the
http_proxy
environment variable is supported in the formathttp://HOST:PORT/
. If aproxy
argument is passed tonew
(including undef), then thehttp_proxy
environment variable is ignored.http_proxy
環境変数はhttp://HOST:PORT/
型式にのみ対応します。 (undef でも)proxy
引数がnew
に渡されると、http_proxy
環境変数は無視されます。 -
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 through the issue tracker at http://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny. You will be notified automatically of any progress on your issue.
バグや機能リクエストについては、 http://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny の イシュートラッカーを使って報告してください。 イシューになんらかの進展があれば自動的に通知されます。
Source Code¶
This is open source software. The code repository is available for public review and contribution under the terms of the license.
これはオープンソースソフトウェアです。 コードリポジトリはライセンスの元で公式レビューおよび貢献のために利用可能です。
https://github.com/dagolden/p5-http-tiny
git clone https://github.com/dagolden/p5-http-tiny.git
作者¶
Christian Hansen <[email protected]>
David Golden <[email protected]>
コピーライト & ライセンス¶
This software is copyright (c) 2012 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.