要約
HTTP のレスポンスを表すためのクラスです。
通常 WEBrick::HTTPResponse オブジェクトはサーブレットの service メソッドや do_XXX メソッドの引数として与えられるものであり、ユーザが明示的に生成する必要はありません。
目次
- 特異メソッド
- インスタンスメソッド
-
- []
- []=
- body
- body=
- chunked=
- chunked?
- config
- content_length
- content_length=
- content_type
- content_type=
- cookies
- each
- filename
- filename=
- header
- http_version
- keep_alive
- keep_alive=
- keep_alive?
- reason_phrase
- reason_phrase=
- request_http_version
- request_http_version=
- request_method
- request_method=
- request_uri
- request_uri=
- sent_size
- set_error
- set_redirect
- status
- status=
- status_line
- to_s
特異メソッド
new(config) -> WEBrick::HTTPResponse
[permalink][rdoc][edit]-
HTTPResponse オブジェクトを生成して返します。
- [PARAM] config:
- 設定を保存したハッシュを指定します。:HTTPVersion は必須です。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } )
インスタンスメソッド
self[field] -> String
[permalink][rdoc][edit]-
レスポンスのヘッダの該当する内容を文字列で返します。
- [PARAM] field:
- ヘッダ名を文字列で指定します。大文字と小文字を区別しません。
p res['date'] #=> "Sat, 27 Oct 2007 08:53:03 GMT"
self[field] = val
[permalink][rdoc][edit]-
レスポンスの該当するヘッダに val を設定します。
- [PARAM] field:
- ヘッダ名を文字列で指定します。大文字と小文字を区別しません。
- [PARAM] val:
- ヘッダの値を指定します。to_s メソッドによって文字列に変換されます。
require 'time' res['last-modified'] = Time.now.httpdate
[SEE_ALSO] WEBrick::HTTPResponse#chunked?, WEBrick::HTTPResponse#content_length, WEBrick::HTTPResponse#content_type
body -> String | IO
[permalink][rdoc][edit]-
クライアントに返す内容(エンティティボディ)を返します。
自身が chunked であっても body の値はチャンク形式ではありません。
body=(val)
[permalink][rdoc][edit]-
クライアントに返す内容(エンティティボディ)をセットします。
自身が chunked であっても body の値はチャンク形式ではありません。
- [PARAM] val:
- メッセージボディを文字列か IO オブジェクトで指定します。自身が chunked であってもチャンク形式にする必要はありません。適切にチャンク形式エンコーディングされます。
require 'webrick' include WEBrick res = HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.body = 'hoge' print res.to_s #=> 出力結果 HTTP/1.1 200 OK Connection: Keep-Alive Date: Sat, 27 Oct 2007 08:58:49 GMT Server: Content-Length: 4 hoge
chunked=(flag)
[permalink][rdoc][edit]-
真に設定するとクライアントに返す内容(エンティティボディ)を chunk に分けるようになります。
自身の WEBrick::HTTPResponse#request_http_version が 1.0 以下である場合、この値は無視されます。
- [PARAM] flag:
- true を指定した場合、レスポンスを chunk に分けてクライアントに返します。
require 'webrick' include WEBrick res = HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.body = 'hoge' res.chunked = true print res.to_s #=> 出力結果 HTTP/1.1 200 OK Connection: Keep-Alive Date: Sat, 27 Oct 2007 09:04:28 GMT Server: Transfer-Encoding: chunked 4 hoge 0 #
chunked? -> bool
[permalink][rdoc][edit]-
真であればクライアントに返す内容(エンティティボディ)を chunk に分けます。
config -> Hash
[permalink][rdoc][edit]-
自身が生成される時に指定されたハッシュを返します。
content_length -> Integer | nil
[permalink][rdoc][edit]content_length=(len)
-
Content-Length ヘッダの値を整数で表すアクセサです。デフォルトは nil です。
- body が String オブジェクトである場合
-
content_length の値が nil のとき Content-Length ヘッダには body のサイズが使われます。nil でないとき body の実際のサイズとこの値が同じかどうかの検証は行われません。
- body が IO オブジェクトである場合
-
content_length の値が nil のとき Content-Length ヘッダはレスポンスに含まれず、IO から全てを読み込んでそれをエンティティボディとします。nil でないとき IO から content_length バイトだけ読み込みそれをエンティティボディとします。
また [RFC2616] 4.4 で定められた Content-Length ヘッダを送ってはいけない場合に当てはまる時には content_length の値は無視され Content-Length ヘッダはレスポンスに含まれません。
- [PARAM] len:
- ヘッダの値を整数で指定します。nil を指定することは出来ません。
require 'webrick' include WEBrick res = HTTPResponse.new( { :HTTPVersion => "1.1" } ) f = File.new('testfile') res.body = f res.content_length = 2 print res.to_s #=> 出力結果 HTTP/1.1 200 OK Connection: Keep-Alive Date: Sat, 27 Oct 2007 12:04:32 GMT Server: Content-Length: 2 ho
content_type -> String | nil
[permalink][rdoc][edit]-
Content-Type ヘッダの値を返します。
content_type=(val)
[permalink][rdoc][edit]-
Content-Type ヘッダの値をセットします。
- [PARAM] val:
- Content-Type ヘッダの値を文字列で指定します。
res.content_type = "text/html"
[SEE_ALSO] WEBrick::HTTPUtils.#mime_type
cookies -> [WEBrick::Cookie]
[permalink][rdoc][edit]-
レスポンスの Set-Cookie ヘッダの値を表す WEBrick::Cookie オブジェクトの配列です。レスポンスに新たに Cookie を加えたい場合はこの配列に WEBrick::Cookie オブジェクトを加えます。
require 'webrick' res.cookies << WEBrick::Cookie.parse_set_cookie(k)
each {|key, val| ... }
[permalink][rdoc][edit]-
レスポンスのヘッダ名を key、内容を val としてブロックを評価します。
filename -> String | nil
[permalink][rdoc][edit]-
自身の内容があるファイルのそれである場合に、そのファイル名を返します。デフォルトは nil です。
filename=(file)
[permalink][rdoc][edit]-
自身の内容があるファイルのそれである場合に、そのファイル名をセットします。デフォルトは nil です。
- [PARAM] file:
- ファイル名を表す文字列です。
header -> Hash
[permalink][rdoc][edit]-
ヘッダ名をキー、ヘッダの値を値とするハッシュを返します。ハッシュのキーも値も文字列です。
http_version -> WEBrick::HTTPVersion
[permalink][rdoc][edit]-
レスポンスの HTTP のバージョンを表す WEBrick::HTTPVersion オブジェクトを返します。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } ) p res.http_version.class #=> WEBrick::HTTPVersion p res.http_version.to_s #=> "1.1"
keep_alive? -> bool
[permalink][rdoc][edit]keep_alive -> bool
-
レスポンスの keep_alive が有効である場合は、真を返します。そうでない場合は偽を返します。デフォルトは真です。
keep_alive=(flag)
[permalink][rdoc][edit]-
真をセットするとレスポンスの keep_alive が有効になります。デフォルトは真です。
- [PARAM] flag:
- 真を指定すると Keep-Alive を有効にします。
reason_phrase -> String | nil
[permalink][rdoc][edit]-
HTTP のレスポンスの最初の行の reason phrase を返します。この値が nil の場合 reason phrase は status から生成されます。デフォルトは nil です。
reason_phrase=(val)
[permalink][rdoc][edit]-
HTTP のレスポンスの最初の行の reason phrase をセットします。この値が nil の場合 reason phrase は status から生成されます。デフォルトは nil です。
- [PARAM] val:
- reason phrase を表す文字列を指定します。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.status = 404 p res.reason_phrase #=> "Not Found"
request_http_version -> WEBrick::HTTPVersion
[permalink][rdoc][edit]-
リクエストの HTTP バージョンを返します。デフォルトでは自身の WEBrick::HTTPResponse#http_version が使われます。
request_http_version=(ver)
[permalink][rdoc][edit]-
リクエストの HTTP バージョンをセットします。
- [PARAM] ver:
- リクエストの HTTP バージョンを WEBrick::HTTPVersion オブジェクトで指定します。
request_method -> String | nil
[permalink][rdoc][edit]-
リクエストの HTTP メソッドを返します。
request_method=(method)
[permalink][rdoc][edit]-
リクエストの HTTP メソッドをセットします。デフォルトは nil です。
- [PARAM] method:
- リクエストの HTTP メソッドを文字列で指定します。
request_uri -> URI | nil
[permalink][rdoc][edit]-
リクエストの URI を返します。
request_uri=(uri)
[permalink][rdoc][edit]-
リクエストの URI をセットします。デフォルトは nil です。
- [PARAM] uri:
- リクエストの URI を URI オブジェクトで指定します。
sent_size -> Integer
[permalink][rdoc][edit]-
クライアントに送られた内容(エンティティボディ)のバイト数を表す整数を返します。
set_error(status, backtrace = false) -> ()
[permalink][rdoc][edit]-
自身の内容(エンティティボディ)を指定された status のエラーページにします。
- [PARAM] status:
- WEBrick::HTTPStatus::Status のサブクラスか一般の例外クラスを指定します。
- [PARAM] backtrace:
- true を指定した場合バックトレースをエラーページに出力します。
set_redirect(status, url) -> ()
[permalink][rdoc][edit]-
指定された url にリダイレクトするためのヘッダと内容(エンティティボディ)を設定し例外 status を発生させます。
- [PARAM] status:
- WEBrick::HTTPStatus::Redirect を指定します。
- [PARAM] url:
- URL を指定します。
例:
require 'webrick' res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
status -> Integer
[permalink][rdoc][edit]-
レスポンスのステータスコードを表す整数を返します。デフォルトは WEBrick::HTTPStatus::RC_OK です。
status=(status)
[permalink][rdoc][edit]-
レスポンスのステータスコードを整数で指定します。 reason_phrase も適切なものに設定されます。
- [PARAM] status:
- ステータスコードを整数で指定します。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.status = 404 p res.reason_phrase #=> "Not Found"
status_line -> String
[permalink][rdoc][edit]-
HTTP のステータスラインを CR+LF 付き文字列で返します。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.status = 404 p res.status_line #=> "HTTP/1.1 404 Not Found \r\n"
to_s -> String
[permalink][rdoc][edit]-
実際にクライアントに送られるデータを文字列として返します。
require 'webrick' include WEBrick res = HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.body = 'hoge' print res.to_s #=> 出力結果 HTTP/1.1 200 OK Connection: Keep-Alive Date: Sat, 27 Oct 2007 08:58:49 GMT Server: Content-Length: 4 hoge