HTTP のレスポンスを表すためのクラスです。
通常 WEBrick::HTTPResponse オブジェクトはサーブレットの service メソッドや do_XXX メソッドの引数として与えられるものであり、ユーザが明示的に生成する必要はありません。
new(config) -> WEBrick::HTTPResponse
[permalink][rdoc]HTTPResponse オブジェクトを生成して返します。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } )
self[field] -> String
[permalink][rdoc]レスポンスのヘッダの該当する内容を文字列で返します。
p res['date'] #=> "Sat, 27 Oct 2007 08:53:03 GMT"
self[field] = val
[permalink][rdoc]レスポンスの該当するヘッダに val を設定します。
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]クライアントに返す内容(エンティティボディ)を返します。
自身が chunked であっても body の値はチャンク形式ではありません。
body=(val)
[permalink][rdoc]クライアントに返す内容(エンティティボディ)をセットします。
自身が chunked であっても body の値はチャンク形式ではありません。
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]真に設定するとクライアントに返す内容(エンティティボディ)を chunk に分けるようになります。
自身の WEBrick::HTTPResponse#request_http_version が 1.0 以下である場合、この値は無視されます。
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]真であればクライアントに返す内容(エンティティボディ)を chunk に分けます。
config -> Hash
[permalink][rdoc]自身が生成される時に指定されたハッシュを返します。
content_length -> Integer | nil
[permalink][rdoc]content_length=(len)
Content-Length ヘッダの値を整数で表すアクセサです。デフォルトは nil です。
content_length の値が nil のとき Content-Length ヘッダには body のサイズが使われます。nil でないとき body の実際のサイズとこの値が同じかどうかの検証は行われません。
content_length の値が nil のとき Content-Length ヘッダはレスポンスに含まれず、IO から全てを読み込んでそれをエンティティボディとします。nil でないとき IO から content_length バイトだけ読み込みそれをエンティティボディとします。
また [RFC2616] 4.4 で定められた Content-Length ヘッダを送ってはいけない場合に当てはまる時には content_length の値は無視され Content-Length ヘッダはレスポンスに含まれません。
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]Content-Type ヘッダの値を返します。
content_type=(val)
[permalink][rdoc]Content-Type ヘッダの値をセットします。
res.content_type = "text/html"
[SEE_ALSO] WEBrick::HTTPUtils.#mime_type
cookies -> [WEBrick::Cookie]
[permalink][rdoc]レスポンスの Set-Cookie ヘッダの値を表す WEBrick::Cookie オブジェクトの配列です。レスポンスに新たに Cookie を加えたい場合はこの配列に WEBrick::Cookie オブジェクトを加えます。
require 'webrick' res.cookies << WEBrick::Cookie.parse_set_cookie(k)
each {|key, val| ... }
[permalink][rdoc]レスポンスのヘッダ名を key、内容を val としてブロックを評価します。
filename -> String | nil
[permalink][rdoc]自身の内容があるファイルのそれである場合に、そのファイル名を返します。デフォルトは nil です。
filename=(file)
[permalink][rdoc]自身の内容があるファイルのそれである場合に、そのファイル名をセットします。デフォルトは nil です。
header -> Hash
[permalink][rdoc]ヘッダ名をキー、ヘッダの値を値とするハッシュを返します。ハッシュのキーも値も文字列です。
http_version -> WEBrick::HTTPVersion
[permalink][rdoc]レスポンスの 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]keep_alive -> bool
レスポンスの keep_alive が有効である場合は、真を返します。そうでない場合は偽を返します。デフォルトは真です。
keep_alive=(flag)
[permalink][rdoc]真をセットするとレスポンスの keep_alive が有効になります。デフォルトは真です。
reason_phrase -> String | nil
[permalink][rdoc]HTTP のレスポンスの最初の行の reason phrase を返します。この値が nil の場合 reason phrase は status から生成されます。デフォルトは nil です。
reason_phrase=(val)
[permalink][rdoc]HTTP のレスポンスの最初の行の reason phrase をセットします。この値が nil の場合 reason phrase は status から生成されます。デフォルトは nil です。
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]リクエストの HTTP バージョンを返します。デフォルトでは自身の WEBrick::HTTPResponse#http_version が使われます。
request_http_version=(ver)
[permalink][rdoc]リクエストの HTTP バージョンをセットします。
request_method -> String | nil
[permalink][rdoc]リクエストの HTTP メソッドを返します。
request_method=(method)
[permalink][rdoc]リクエストの HTTP メソッドをセットします。デフォルトは nil です。
request_uri -> URI | nil
[permalink][rdoc]リクエストの URI を返します。
request_uri=(uri)
[permalink][rdoc]リクエストの URI をセットします。デフォルトは nil です。
sent_size -> Integer
[permalink][rdoc]クライアントに送られた内容(エンティティボディ)のバイト数を表す整数を返します。
set_error(status, backtrace = false) -> ()
[permalink][rdoc]自身の内容(エンティティボディ)を指定された status のエラーページにします。
set_redirect(status, url) -> ()
[permalink][rdoc]指定された url にリダイレクトするためのヘッダと内容(エンティティボディ)を設定し例外 status を発生させます。
例:
require 'webrick' res.set_redirect WEBrick::HTTPStatus::TemporaryRedirect
status -> Integer
[permalink][rdoc]レスポンスのステータスコードを表す整数を返します。デフォルトは WEBrick::HTTPStatus::RC_OK です。
status=(status)
[permalink][rdoc]レスポンスのステータスコードを整数で指定します。 reason_phrase も適切なものに設定されます。
require 'webrick' res = WEBrick::HTTPResponse.new( { :HTTPVersion => "1.1" } ) res.status = 404 p res.reason_phrase #=> "Not Found"
status_line -> String
[permalink][rdoc]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]実際にクライアントに送られるデータを文字列として返します。
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