要約
HTTP レスポンスを表現するクラスです。 Net::HTTP クラスは実際には HTTPResponse のサブクラスを返します。
目次
- 特異メソッド
- インスタンスメソッド
- 定数
継承しているメソッド
- Net::HTTPHeaderから継承しているメソッド
-
- []
- []=
- add_field
- basic_auth
- canonical_each
- chunked?
- connection_close?
- connection_keep_alive?
- content_length
- content_length=
- content_range
- content_type
- content_type=
- delete
- each
- each_capitalized
- each_capitalized_name
- each_header
- each_key
- each_name
- each_value
- fetch
- form_data=
- get_fields
- key?
- length
- main_type
- proxy_basic_auth
- range
- range=
- range_length
- set_content_type
- set_form
- set_form_data
- set_range
- size
- sub_type
- to_hash
- type_params
特異メソッド
body_permitted? -> bool[permalink][rdoc][edit]-
エンティティボディを含むことが許されているレスポンスクラスならば真を、そうでなければ偽を返します。
例require 'net/http' p Net::HTTPSuccess.body_permitted? # => true p Net::HTTPNotModified.body_permitted? # => false
インスタンスメソッド
body -> String | () | nil[permalink][rdoc][edit]entity -> String | () | nil-
エンティティボディを返します。
レスポンスにボディがない場合には nil を返します。
Net::HTTPResponse#read_body をブロック付きで呼んだ場合にはこのメソッドはNet::ReadAdapter のインスタンスを返しますが、これは使わないでください。
entity は obsolete です。
例require 'net/http' uri = "http://www.example.com/index.html" response = Net::HTTP.get_response(URI(uri)) p response.body[0..10] # => "<!doctype h" body=(value)Ruby 1.9.1 から[permalink][rdoc][edit]-
エンティティボディを value に設定します。
- [PARAM]
value: - 設定するボディを文字列で指定します。
require 'net/http' uri = URI('http://www.example.com/index.html') response = Net::HTTP.get_response(uri) response.body = 'dummy' p response.body # => "dummy"[SEE_ALSO] Net::HTTPResponse#body, Net::HTTPResponse#read_body
- [PARAM]
body_encoding -> Encoding | falseRuby 3.2 から[permalink][rdoc][edit]body_encoding=(value)-
エンティティボディを読み込む際に使うエンコーディングを取得・設定します。
デフォルトは false で、この場合ボディの内容からエンコーディングが推測されます。
value には Encoding オブジェクト、またはエンコーディング名を表す文字列を指定できます。文字列を指定した場合は Encoding.find を使って Encoding オブジェクトに変換されます。
- [PARAM]
value: - 使用するエンコーディング (Encoding オブジェクトまたはその名前を表す文字列)
require 'net/http' http = Net::HTTP.new('www.example.com') req = Net::HTTP::Get.new('/') http.request(req) do |res| res.body_encoding = "UTF-8" p res.body.encoding # => #<Encoding:UTF-8> end - [PARAM]
code -> String[permalink][rdoc][edit]-
HTTP のリザルトコードです。例えば '302' などです。
この値を見ることでレスポンスの種類を判別できますが、レスポンスオブジェクトがどのクラスのインスタンスかを見ることでもレスポンスの種類を判別できます。
例require 'net/http' uri = "http://www.example.com/index.html" response = Net::HTTP.get_response(URI(uri)) p response.code # => "200" decode_content -> boolRuby 2.0.0 から[permalink][rdoc][edit]decode_content=(bool)-
エンティティボディの
Content-Encoding:を自動的に展開するかどうかを取得・設定します。ユーザがリクエストヘッダフィールド
Accept-Encoding:を明示的に設定・削除していなかった場合に、自動的に真が設定されます。真の場合、Net::HTTPResponse#read_body などでボディを読み込む際に、レスポンスのContent-Encoding:が gzip や deflate であればボディを透過的に展開します。- [PARAM]
bool: -
Content-Encoding:を自動的に展開するかどうかを真偽値で指定します。
[SEE_ALSO] Net::HTTPGenericRequest#decode_content
- [PARAM]
response -> self[permalink][rdoc][edit]header -> self-
互換性を保つためだけに導入されたメソッドです。使わないでください。
自分自身を返します。
http_version -> String[permalink][rdoc][edit]-
サーバがサポートしている HTTP のバージョンを文字列で返します。
例require 'net/http' uri = "http://www.example.com/index.html" response = Net::HTTP.get_response(URI(uri)) p response.http_version # => "1.1" ignore_eof -> boolRuby 3.2 から[permalink][rdoc][edit]ignore_eof=(bool)-
Content-Length:ヘッダフィールドが指定されたボディを読み込む際に、EOF (End Of File) を無視するかどうかを取得・設定します。- [PARAM]
bool: - EOF を無視するかどうかを真偽値で指定します。
require 'net/http' uri = URI('http://www.example.com/index.html') response = Net::HTTP.get_response(uri) response.ignore_eof = false p response.ignore_eof # => false[SEE_ALSO] Net::HTTP#ignore_eof
- [PARAM]
message -> String[permalink][rdoc][edit]msg -> String-
HTTP サーバがリザルトコードに付加して返すメッセージです。例えば 'Not Found' などです。
msg は obsolete です。使わないでください。
例require 'net/http' uri = "http://www.example.com/index.html" response = Net::HTTP.get_response(URI(uri)) p response.message # => "OK" read_body(dest=nil) -> String|nil[permalink][rdoc][edit]read_body {|str| .... } -> ()-
ブロックを与えなかった場合にはエンティティボディを文字列で返します。ブロックを与えた場合にはエンティティボディを少しずつ取得して順次ブロックに文字列で与えます。
レスポンスがボディを持たない場合には nil を返します。
例1 ブロックを与えずに一度に結果取得
例2 ブロックを与えて大きいファイルを取得require 'net/http' uri = "http://www.example.com/index.html" response = Net::HTTP.get_response(URI(uri)) p response.read_body[0..10] # => "<!doctype h"require 'net/http' uri = URI('http://www.example.com/path/to/big.file') Net::HTTP.start(uri.host, uri.port) do |http| File.open("/path/to/big.file", "w") do |f| # Net::HTTP#request_get と Net::HTTPResponse#read_body で少しずつ読み書き。メモリ消費が少ない。 http.request_get(uri.path) do |response| response.read_body do |s| f.write(s) end end end end一度ブロックを与えずにこのメソッドを呼んだ場合には、次からはすでに読みだしたボディを文字列として返します。また一度ブロックを与えてこのメソッドを呼んだ場合には、次からは Net::ReadAdapter のインスタンスが返ってきますが、その場合はそのオブジェクトは使わないでください。
dest は obsolete です。使わないでください。 dest を指定した場合にはボディを少しずつ取得して順次「dest << ボディの断片」を実行します。
- [PARAM]
dest: - obsoleteな引数です。利用しないでください。
[SEE_ALSO] Net::HTTP#request_get
- [PARAM]
uri -> URI | nilRuby 2.0.0 から[permalink][rdoc][edit]-
このレスポンスの取得に使われた URI オブジェクトを返します。
リクエストの生成に URI オブジェクトを使わなかった場合は nil を返します。
例require 'net/http' uri = URI('http://www.example.com/index.html') response = Net::HTTP.get_response(uri) p response.uri # => #<URI::HTTP http://www.example.com/index.html>[SEE_ALSO] Net::HTTPGenericRequest#uri
value -> nil[permalink][rdoc][edit]-
レスポンスが 2xx(成功)でなかった場合に、対応する例外を発生させます。
- [EXCEPTION]
HTTPError: - レスポンスが 1xx であるか、 net/http が知らない種類のレスポンスである場合に発生します。
- [EXCEPTION]
HTTPRetriableError: - レスポンスが 3xx である場合に発生します。
- [EXCEPTION]
HTTPServerException: - レスポンスが 4xx である場合に発生します。
- [EXCEPTION]
HTTPFatalError: - レスポンスが 5xx である場合に発生します。
例 レスポンスが 2xx以外require 'net/http' uri = "http://www.example.com/index.html" response = Net::HTTP.get_response(URI(uri)) p response.value # => nilrequire 'net/http' uri = "http://www.example.com/invalid.html" response = Net::HTTP.get_response(URI(uri)) begin response.value rescue => e e.class # => Net::HTTPServerException p e.message # => 404 "Not Found" end - [EXCEPTION]
定数
CODE_CLASS_TO_OBJ -> HashRuby 2.5.0 から[permalink][rdoc][edit]-
HTTP レスポンスステータスコードの最初の数字からレスポンスのクラス(分類)をあらわすクラスへのハッシュです。
require 'net/http' p Net::HTTPResponse::CODE_CLASS_TO_OBJ['3'] # => Net::HTTPRedirection CODE_TO_OBJ -> HashRuby 2.5.0 から[permalink][rdoc][edit]-
HTTP レスポンスステータスコードから対応するクラスへのハッシュです。
require 'net/http' p Net::HTTPResponse::CODE_TO_OBJ['404'] # => Net::HTTPNotFound