class WEBrick::HTTPResponse

[edit]

要約

HTTP のレスポンスを表すためのクラスです。

通常 WEBrick::HTTPResponse オブジェクトはサーブレットの service メソッドや do_XXX メソッドの引数として与えられるものであり、ユーザが明示的に生成する必要はありません。

目次

特異メソッド
インスタンスメソッド

特異メソッド

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