Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > webrick/httpresponseライブラリ > WEBrick::HTTPResponseクラス

class WEBrick::HTTPResponse

クラスの継承リスト: WEBrick::HTTPResponse < Object < Kernel < BasicObject

Abstract

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

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

特異メソッド

new(config)

HTTPResponse オブジェクトを生成して返します。

[PARAM] config:
設定を保存したハッシュを指定します。:HTTPVersion は必須です。
res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } )

インスタンスメソッド

self[field] -> String

レスポンスのヘッダの該当する内容を文字列で返します。

[PARAM] field:
ヘッダ名を文字列で指定します。大文字と小文字を区別しません。
p res['date']   #=> "Sat, 27 Oct 2007 08:53:03 GMT"
self[field] = val

レスポンスの該当するヘッダに val を設定する。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
body=(val)

クライアントに返す内容(エンティティボディ)を表すアクセサです。

自身が 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? -> bool
chunked=(flag)

クライアントに返す内容(エンティティボディ)を 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

#
config -> Hash

自身が生成される時に指定されたハッシュを返します。

content_length -> Integer | nil
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
content_type=(val)

Content-Type ヘッダの値を文字列で表すアクセサです。

[PARAM] val:
Content-Type ヘッダの値を文字列で指定します。
res.content_type = "text/html"

[SEE_ALSO] WEBrick::HTTPUtils.#mime_type

cookies -> [WEBrick::Cookie]

レスポンスの Set-Cookie ヘッダの値を表す WEBrick::Cookie オブジェクトの配列です。 レスポンスに新たに Cookie を加えたい場合はこの配列に WEBrick::Cookie オブジェクトを加えます。

res.cookies << WEBrick::Cookie.parse_set_cookie(k)
each {|key, val| ... }

レスポンスのヘッダ名を key、内容を val としてブロックを評価します。

filename -> String | nil
filename=(file)

自身の内容があるファイルのそれである場合に、そのファイル名を文字列で表すアクセサです。 デフォルトは nil です。

[PARAM] file:
ファイル名を表す文字列です。
header -> Hash

ヘッダ名をキー、ヘッダの値を値とするハッシュを返します。ハッシュのキーも値も文字列です。

http_version -> WEBrick::HTTPVersion

レスポンスの 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
keep_alive -> bool
keep_alive=(flag)

レスポンスの keep_alive が有効であるかを真偽で表すアクセサです。 デフォルトは true です。

[PARAM] flag:
true を指定すると Keep-Alive を有効にします。
reason_phrase -> String | nil
reason_phrase=(val)

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
request_http_version=(ver)

リクエストの HTTP バージョンを WEBrick::HTTPVersion オブジェクトで表すアクセサです。 デフォルトでは自身の WEBrick::HTTPResponse#http_version が使われます。

[PARAM] ver:
リクエストの HTTP バージョンを WEBrick::HTTPVersion オブジェクトで指定します。
request_method -> String | nil
request_method=(method)

リクエストの HTTP メソッドを文字列で表すアクセサです。 デフォルトは nil です。

[PARAM] method:
リクエストの HTTP メソッドを文字列で指定します。
request_uri -> URI | nil
request_uri=(uri)

リクエストの URI を URI オブジェクトで表すアクセサです。 デフォルトは nil です。

[PARAM] method:
リクエストの URI を URI オブジェクトで指定します。
sent_size -> Integer

クライアントに送られた内容(エンティティボディ)のバイト数を表す整数を返します。

set_error(status, backtrace = false) -> ()

自身の内容(エンティティボディ)を指定された status のエラーページにします。

[PARAM] status:
WEBrick::HTTPStatus::Status のサブクラスか一般の例外クラスを指定します。
[PARAM] backtrace:
true を指定した場合バックトレースをエラーページに出力します。
set_redirect(status, url) -> ()

指定された url にリダイレクトするためのヘッダと内容(エンティティボディ)を設定し例外 status を 発生させます。

status -> Integer

レスポンスのステータスコードを表す整数を返します。 デフォルトは WEBrick::HTTPStatus::RC_OK です。

status=(status)

レスポンスのステータスコードを整数で指定します。 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

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

実際にクライアントに送られるデータを文字列として返します。

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

Methods

Classes