class Net::HTTP

aliases: HTTPSession

要約

HTTP のクライアントのためのクラスです。

目次

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

特異メソッド

Proxy(address, port = 80) -> Class[permalink][rdoc]

Proxy 経由で http サーバに接続するためのクラスを作成し返します。

このクラスは Net::HTTP を継承しているので Net::HTTP と全く同じように使えます。指定されたプロクシを常に経由して http サーバに接続します。

address が nil のときは Net::HTTP クラスをそのまま返します。

例1: Net::HTTP.new を使う

require 'net/http'
proxy_class = Net::HTTP::Proxy('proxy.example.com', 8080)
http = proxy_class.new('www.example.org')
http.start {|h|
  h.get('/ja/') # proxy.example.com 経由で接続します。
}

例2: Net::HTTP.start を使う

require 'net/http'
proxy_class = Net::HTTP::Proxy('proxy.example.com', 8080)
proxy_class.start('www.example.org') {|h|
  h.get('/ja/') # proxy.example.com 経由で接続します。
}
[PARAM] address:
プロクシのホスト名を文字列で与えます。
[PARAM] port:
プロクシのポート番号を与えます。
http_default_port -> Integer[permalink][rdoc]
default_port -> Integer

HTTP のデフォルトポート (80) を返します。

get(uri) -> String[permalink][rdoc]
get(host, path, port = 80) -> String

指定した対象に GET リクエストを送り、そのボディを文字列として返します。

対象の指定方法は URI で指定するか、 (host, port, path) で指定するかのいずれかです。

[PARAM] uri:
データの取得対象を URI で指定します。
[PARAM] host:
接続先のホストを文字列で指定します。
[PARAM] path:
データの存在するパスを文字列で指定します。
[PARAM] port:
接続するポートを整数で指定します。

[SEE_ALSO] Net::HTTP#get

get_print(uri) -> ()[permalink][rdoc]
get_print(host, path, port = 80) -> ()

指定した対象から HTTP でエンティティボディを取得し、 $stdout に出力します。

対象の指定方法は URI で指定するか、 (host, port, path) で指定するかのいずれかです。

[PARAM] uri:
データの取得対象を URI で指定します。
[PARAM] host:
接続先のホストを文字列で指定します。
[PARAM] path:
データの存在するパスを文字列で指定します。
[PARAM] port:
接続するポートを整数で指定します。

[SEE_ALSO] Net::HTTP.get

require 'net/http'
require 'uri'
Net::HTTP.get_print URI.parse('http://www.example.com/index.html')

もしくは

require 'net/http'
Net::HTTP.get_print 'www.example.com', '/index.html'
get_response(uri) -> Net::HTTPResponse[permalink][rdoc]
get_response(host, path = nil, port = nil) -> Net::HTTPResponse

指定した対象に GET リクエストを送り、そのレスポンスを Net::HTTPResponse として返します。

対象の指定方法は URI で指定するか、 (host, port, path) で指定するかのいずれかです。

[PARAM] uri:
データの取得対象を URI で指定します。
[PARAM] host:
接続先のホストを文字列で指定します。
[PARAM] path:
データの存在するパスを文字列で指定します。
[PARAM] port:
接続するポートを整数で指定します。

[SEE_ALSO] Net::HTTP#get

https_default_port -> Integer[permalink][rdoc]

HTTPS のデフォルトポート (443) を返します。

version_1_1? -> false[permalink][rdoc]
is_version_1_1? -> false

何もしません。互換性のために残されており、常に false を返します。

[SEE_ALSO] Net::HTTP.version_1_2, Net::HTTP.version_1_2?

version_1_2? -> true[permalink][rdoc]
is_version_1_2? -> true

何もしません。互換性のために残されており、常に true を返します。

[SEE_ALSO] Net::HTTP.version_1_2, Net::HTTP.version_1_1?

new(address, port = 80, proxy_addr = :ENV, proxy_port = nil, proxy_user=nil, proxy_pass=nil) -> Net::HTTP[permalink][rdoc]

新しい Net::HTTP オブジェクトを生成します。

proxy_addr に :ENV を指定すると自動的に環境変数 http_proxy からプロクシの URI を取り出し利用します。この場合環境変数 http_proxy が定義されていない場合にはプロクシは利用せず直接接続します。詳しくは URI::Generic#find_proxy を参照してください。

明示的にプロクシのホスト名とポート番号を指定してプロクシを利用することもできます。このときには proxy_addr にホスト名もしくは IP アドレスを渡します。このときに proxy_userを指定するとプロクシの認証が行われます。

このメソッドは TCP コネクションを張りません。

[PARAM] address:
接続するホスト名を文字列で指定します。
[PARAM] port:
接続するポート番号を指定します。
[PARAM] proxy_addr:
プロクシのホスト名もしくはアドレスを文字列で指定します。:ENV を指定すると環境変数 http_proxy を利用してプロクシの設定をします。省略した場合には直接接続します。
[PARAM] proxy_port:
プロクシのポートを指定します。
[PARAM] proxy_user:
プロクシの認証のユーザ名を指定します。省略した場合には認証はなされません。
[PARAM] proxy_pass:
プロクシの認証のパスワードを指定します。
post_form(uri, params) -> Net::HTTPResponse[permalink][rdoc]

URI で指定した対象に フォームのデータを HTTP で POST します。

送るデータは params に文字列から文字列への Hash として渡します。

[PARAM] uri:
POST する対象を URI で指定します。
[PARAM] params:
POST するデータです。
proxy_address -> String|nil[permalink][rdoc]

自身が (Net::HTTP.Proxy によって作成された) プロクシ用のクラスならばプロクシのアドレスを返します。

そうでなければ nil を返します。

[SEE_ALSO] Net::HTTP.Proxy

proxy_class? -> bool[permalink][rdoc]

自身が (Net::HTTP.Proxy によって作成された) プロクシ用のクラスならば真を返し、そうでなければ偽を返します。

[SEE_ALSO] Net::HTTP.Proxy

proxy_pass -> String|nil[permalink][rdoc]

自身が (Net::HTTP.Proxy によって作成された) プロクシ用のクラスならばプロクシ認証のパスワードを返します。

そうでなければ nil を返します。

[SEE_ALSO] Net::HTTP.Proxy

proxy_port -> Integer|nil[permalink][rdoc]

自身が (Net::HTTP.Proxy によって作成された) プロクシ用のクラスならばプロクシのポート番号を返します。

そうでなければ nil を返します。

[SEE_ALSO] Net::HTTP.Proxy

proxy_user -> String|nil[permalink][rdoc]

自身が (Net::HTTP.Proxy によって作成された) プロクシ用のクラスで、かつプロクシの認証を利用する場合はプロクシ認証のユーザ名を返します。

そうでなければ nil を返します。

[SEE_ALSO] Net::HTTP.Proxy

start(address, port = 80, proxy_addr = :ENV, proxy_port = nil, proxy_user=nil, proxy_pass=nil) -> Net::HTTP[permalink][rdoc]
start(address, port = 80, proxy_addr = :ENV, proxy_port = nil, proxy_user=nil, proxy_pass=nil) {|http| .... } -> object

新しい Net::HTTP オブジェクトを生成し、 TCP コネクション、 HTTP セッションを開始します。

ブロックを与えた場合には生成したオブジェクトをそのブロックに渡し、ブロックが終わったときに接続を閉じます。このときはブロックの値を返り値とします。

ブロックを与えなかった場合には生成したオブジェクトを渡します。利用後にはこのオブジェクトを Net::HTTP#finish してください。

proxy_addr に :ENV を指定すると環境変数 http_proxy からプロクシの URI を取り出し利用します。環境変数 http_proxy が定義されていない場合にはプロクシは利用しません。

このメソッドは以下と同じです。

require 'net/http'
Net::HTTP.new(address, port, proxy_addr, proxy_port, proxy_user, proxy_pass).start(&block)
[PARAM] address:
接続するホスト名を文字列で指定します。
[PARAM] port:
接続するポート番号を指定します。
[PARAM] proxy_addr:
プロクシのホスト名もしくはアドレスを文字列で指定します。:ENV を指定すると環境変数 http_proxy を利用してプロクシの設定をします。省略した場合には直接接続します。
[PARAM] proxy_port:
プロクシのポートを指定します。
[PARAM] proxy_user:
プロクシの認証のユーザ名を指定します。省略した場合には認証はなされません。
[PARAM] proxy_pass:
プロクシの認証のパスワードを指定します。
[EXCEPTION] Net::OpenTimeout:
接続がタイムアウトしたときに発生します

[SEE_ALSO] Net::HTTP.new, Net::HTTP#start

version_1_2 -> true[permalink][rdoc]

何もしません。互換性のために残されており、常に true を返します。

[SEE_ALSO] Net::HTTP.version_1_1?, Net::HTTP.version_1_2?

インスタンスメソッド

started? -> bool[permalink][rdoc]
active? -> bool

HTTP セッションが開始されていたら真を返します。

active? は時代遅れのメソッドです。

address -> String[permalink][rdoc]

接続するアドレスを返します。

[SEE_ALSO] Net::HTTP.new

ca_file -> String | nil[permalink][rdoc]

信頼する CA 証明書ファイルのパスを返します。

[SEE_ALSO] Net::HTTP#ca_file=, OpenSSL::SSL::SSLContext#ca_file

ca_file=(path)[permalink][rdoc]

信頼する CA 証明書ファイルのパスを文字列で設定します。

ファイルには複数の証明書を含んでいても構いません。詳しくは OpenSSL::SSL::SSLContext#ca_file= を見てください。

デフォルトは nil (指定なし)です。

[PARAM] path:
ファイルパス文字列

[SEE_ALSO] Net::HTTP#ca_file, OpenSSL::SSL::SSLContext#ca_file=

ca_path -> String | nil[permalink][rdoc]

信頼する CA 証明書ファイルが存在するディレクトリを設定します。

[SEE_ALSO] Net::HTTP#ca_path=, OpenSSL::SSL::SSLContext#ca_path

ca_path=(path)[permalink][rdoc]

信頼する CA 証明書ファイルが存在するディレクトリを設定します。

ファイル名はハッシュ値の文字列にしなければなりません。詳しくは OpenSSL::SSL::SSLContext#ca_path= を見てください。

デフォルトは nil (指定なし)です。

[PARAM] path:
ディレクトリ名文字列

[SEE_ALSO] Net::HTTP#ca_path, OpenSSL::SSL::SSLContext#ca_path=

cert -> OpenSSL::X509::Certificate | nil[permalink][rdoc]

クライアント証明書を返します。

[SEE_ALSO] Net::HTTP#cert=, OpenSSL::SSL::SSLContext#cert

cert=(certificate)[permalink][rdoc]

クライアント証明書を設定します。

デフォルトは nil (クライアント証明書による認証をしない)です。

[PARAM] certificate:
証明書オブジェクト(OpenSSL::X509::Certificate)

[SEE_ALSO] Net::HTTP#cert, OpenSSL::SSL::SSLContext#cert=

cert_store -> OpenSSL::X509::Store | nil[permalink][rdoc]

接続相手の証明書の検証のために使う、信頼している CA 証明書を含む証明書ストアを返します。

[SEE_ALSO] Net::HTTP#cert_store, OpenSSL::SSL::SSLContext#cert_store=

cert_store=(store)[permalink][rdoc]

接続相手の証明書の検証のために使う、信頼している CA 証明書を含む証明書ストアを設定します。

通常は Net::HTTP#ca_file=Net::HTTP#ca_path= で設定しますが、より詳細な設定をしたい場合にはこちらを用います。

デフォルトは nil (証明書ストアを指定しない)です。

[SEE_ALSO] Net::HTTP#cert_store=, OpenSSL::SSL::SSLContext#cert_store

ciphers -> String | [String] | nil[permalink][rdoc]

Net::HTTP#ciphers で設定した値を返します。

OpenSSL::SSL::SSLContext#ciphers が返す値とは異なるので注意してください。

[SEE_ALSO] Net::HTTP#ciphers=

ciphers=(ciphers)[permalink][rdoc]

利用可能な共通鍵暗号を設定します。

OpenSSL::SSL::SSLContext#ciphers= と同じ形式で設定します。詳しくはそちらを参照してください。

[PARAM] ciphers:
利用可能にする共通鍵暗号の種類

[SEE_ALSO] Net::HTTP#ciphers

close_on_empty_response -> bool[permalink][rdoc]

レスポンスがボディを持っていない場合にコネクションを閉じるかどうかを返します。

デフォルトでは偽(閉じない)です。

[SEE_ALSO] Net::HTTP#close_on_empty_response=

close_on_empty_response=(bool)[permalink][rdoc]

レスポンスがボディを持っていない場合にコネクションを閉じるかどうかを設定します。

[PARAM] bool:
レスポンスがボディを持っていない場合にコネクションを閉じるかどうか指定します。

[SEE_ALSO] Net::HTTP#close_on_empty_response

continue_timeout -> Integer | nil[permalink][rdoc]

「100 Continue」レスポンスを待つ秒数を返します。

この秒数待ってもレスポンスが来ない場合はリクエストボディを送信します。

デフォルトは nil (待たない)です。

[SEE_ALSO] Net::HTTP#continue_timeout=

continue_timeout=(seconds)[permalink][rdoc]

「100 Continue」レスポンスを待つ秒数を指定します。

この秒数待ってもレスポンスが来ない場合はリクエストボディを送信します。

デフォルトは nil (待たない)です。

[PARAM] seconds:
秒数

[SEE_ALSO] Net::HTTP#continue_timeout

copy(path, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に COPY リクエストをヘッダを initheader として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Copy

delete(path, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に DELETE リクエストをヘッダを initheader として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Delete

finish -> ()[permalink][rdoc]

HTTP セッションを終了します。セッション開始前にこのメソッドが呼ばれた場合は例外 IOError を発生します。

[EXCEPTION] IOError:
セッション開始前に呼ぶと発生します。
get(path, header = nil, dest = nil) -> Net::HTTPResponse[permalink][rdoc]
get(path, header = nil, dest = nil) {|body_segment| .... } -> Net::HTTPResponse

サーバ上の path にあるエンティティを取得し、 Net::HTTPResponse のインスタンスとして返します。

header が nil でなければ、リクエストを送るときにその内容を HTTP ヘッダとして送ります。 header は { 'Accept' = > '*/*', ... } という形のハッシュでなければいけません。

ブロックと一緒に呼びだされたときはエンティティボディを少しずつ文字列としてブロックに与えます。このとき戻り値の Net::HTTPResponse オブジェクトは有効な body を持ちません。

dest は時代遅れの引数です。利用しないでください。 dest を指定した場合にはボディを少しずつ取得して順次「dest << ボディの断片」を実行します。

[PARAM] path:
取得するエンティティのパスを文字列で指定します。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。
[PARAM] dest:
利用しないでください。

1.1 互換モードの場合は、レスポンスに応じて例外が発生します。また、返り値が [レスポンスオブジェクト, そのボディ] となります。

# net/http version 1.1
response, body = http.get( '/index.html' )

# net/http version 1.2
response = http.get('/index.html')

# compatible in both version
response , = http.get('/index.html')
response.body

# compatible, using block
File.open('save.txt', 'w') {|f|
  http.get('/~foo/', nil) do |str|
    f.write str
  end
}

[SEE_ALSO] Net::HTTP#request_get

request_get(path, header = nil) -> Net::HTTPResponse[permalink][rdoc]
request_get(path, header = nil) {|response| .... } -> Net::HTTPResponse
get2(path, header = nil) -> Net::HTTPResponse
get2(path, header = nil) {|response| .... } -> Net::HTTPResponse

サーバ上の path にあるエンティティを取得します。 Net::HTTPResponse オブジェクトを返します。

header が nil でなければ、リクエストを送るときにその内容を HTTP ヘッダとして送ります。 header は { 'Accept' = > '*/*', ... } という形のハッシュでなければいけません。

ブロックとともに呼び出されたときは、エンティティボディをソケットから読み出す前に、接続を維持した状態で Net::HTTPResponse オブジェクトをブロックに渡します。大きなサイズのボディを一度に読みだすとまずく、小さなサイズに分けて取りだしたい場合にはこれを利用します。

[PARAM] path:
取得するエンティティのパスを文字列で指定します。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。
# example
response = http.request_get('/index.html')
p response['content-type']
puts response.body          # body is already read

# using block
http.request_get('/index.html') {|response|
  p response['content-type']
  response.read_body do |str|   # read body now
    print str
  end
}

get2 は時代遅れなので使わないでください。

[SEE_ALSO] Net::HTTP#get, Net::HTTPResponse#read_body

head(path, header = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバ上の path にあるエンティティのヘッダのみを取得します。 Net::HTTPResponse のインスタンスを返します。

header が nil でなければ、リクエストを送るときにその内容を HTTP ヘッダとして送ります。 header は { 'Accept' = > '*/*', ... } という形のハッシュでなければいけません。

[PARAM] path:
取得するエンティティのパスを文字列で指定します。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。

1.1 互換モードの場合は、レスポンスに応じて例外が発生します。

require 'net/http'

response = nil
Net::HTTP.start('some.www.server', 80) {|http|
  response = http.head('/index.html')
}
p response['content-type']

[SEE_ALSO] Net::HTTP#request_head

request_head(path, header = nil) -> Net::HTTPResponse[permalink][rdoc]
request_head(path, header = nil) {|response| .... } -> Net::HTTPResponse
head2(path, header = nil) -> Net::HTTPResponse
head2(path, header = nil) {|response| .... } -> Net::HTTPResponse

サーバ上の path にあるエンティティのヘッダのみを取得します。 Net::HTTPResponse オブジェクトを返します。

header が nil でなければ、リクエストを送るときにその内容を HTTP ヘッダとして送ります。 header は { 'Accept' = > '*/*', ... } という形のハッシュでなければいけません。

ブロックとともに呼び出されたときは、 Net::HTTP#request_get と同じ動作をしますが、そもそもヘッダしか要求していないので body は空です。そのためこの動作はそれほど意味はありません。

[PARAM] path:
ヘッダを取得するエンティティのパスを文字列で指定します。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。

head2 は時代遅れなので使わないでください。

response = http.request_head('/index.html')
p response['content-type']

[SEE_ALSO] Net::HTTP#head

keep_alive_timeout -> Integer[permalink][rdoc]

以前のリクエストで使ったコネクションの再利用(keep-alive)を許可する秒数を返します。

デフォルトは2(秒)です。

[SEE_ALSO] Net::HTTP#keep_alive_timeout=

keep_alive_timeout=(seconds)[permalink][rdoc]

以前のリクエストで使ったコネクションの再利用(keep-alive)を許可する秒数を設定します。

この秒数以内に同じホストに次のリクエストを送った場合、ソケットを再利用します。

デフォルトは2(秒)です。これは一般的にサーバ側の keep-alive の秒数が2秒である場合が多いからです。

[SEE_ALSO] Net::HTTP#keep_alive_timeout

key -> OpenSSL::PKey::PKey | nil[permalink][rdoc]

クライアント証明書の秘密鍵を返します。

[SEE_ALSO] Net::HTTP#key=, OpenSSL::SSL::SSLContext#key

key=(key)[permalink][rdoc]

クライアント証明書の秘密鍵を設定します。

OpenSSL::PKey::RSA オブジェクトか OpenSSL::PKey::DSA オブジェクトを設定します。

デフォルトは nil (鍵なし)です。

[PARAM] key:
設定する秘密鍵

[SEE_ALSO] Net::HTTP#key, OpenSSL::SSL::SSLContext#key=

local_host -> String | nil[permalink][rdoc]

接続に用いるローカルホスト名を返します。

nil の場合システムが適当にローカルホストを決めます。

デフォルトは nil です。

[SEE_ALSO] Net::HTTP#local_host=, Net::HTTP#local_port

local_host=(host)[permalink][rdoc]

接続に用いるローカルホスト名を指定します。

nil の場合システムが適当にローカルホストを決めます。

デフォルトは nil です。

[PARAM] host:
ホスト名、もしくはアドレスを示す文字列


require 'net/http'

http = Net::HTTP.new("www.example.com")
http.local_host = "192.168.0.5"
http.local_port = "53043"

http.start do |h|
  p h.get("/").body
end

[SEE_ALSO] Net::HTTP#local_host=, Net::HTTP#local_port

local_port -> nil | Integer | String[permalink][rdoc]

接続に用いるローカルポートを返します。

nil の場合システムが適当にローカルポートを決めます。

デフォルトは nil です。

[SEE_ALSO] Net::HTTP#local_port=, Net::HTTP#local_host

local_port=(port)[permalink][rdoc]

接続に用いるローカルポートを設定します。

nil の場合システムが適当にローカルポートを決めます。

デフォルトは nil です。

[PARAM] port:
ローカルポート(数値、もしくはサービス名文字列)


require 'net/http'

http = Net::HTTP.new("www.example.com")
http.local_host = "192.168.0.5"
http.local_port = "53043"

http.start do |h|
  p h.get("/").body
end

[SEE_ALSO] Net::HTTP#local_port=, Net::HTTP#local_host

[SEE_ALSO] Net::HTTP.new

lock(path, body, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に LOCK リクエストをヘッダを initheader, ボディを body として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] body:
リクエストのボディを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Lock

mkcol(path, body, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に MKCOL リクエストをヘッダが initheader, ボディを body として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] body:
リクエストのボディを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Mkcol

move(path, body, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に MOVE リクエストをヘッダが initheader, ボディを body として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] body:
リクエストのボディを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Move

open_timeout -> Integer|nil[permalink][rdoc]

接続時に待つ最大秒数を返します。

この秒数たってもコネクションが開かなければ例外 Net::OpenTimeout を発生します。

デフォルトは60(秒)です。

[SEE_ALSO] Net::HTTP#read_timeout, Net::HTTP#open_timeout=

open_timeout=(seconds)[permalink][rdoc]

接続時に待つ最大秒数を設定します。

この秒数たってもコネクションが開かなければ例外 Net::OpenTimeout を発生します。 nilを設定するとタイムアウトしなくなります。

以下のコネクションを開くメソッドで有効です。

[PARAM] second:
待つ秒数を指定します。

[SEE_ALSO] Net::HTTP#read_timeout, Net::HTTP#open_timeout

options(path, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に OPTIONS リクエストをヘッダが initheader として送り、レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Options

patch(path, data, initheader=nil, dest=nil) -> Net::HTTPResponse[permalink][rdoc]
patch(path, data, initheader=nil, dest=nil) {|body_segment| ... } -> Net::HTTPResponse

サーバ上の path にあるエンティティに対し文字列 data を PATCH リクエストで送ります。

返り値は Net::HTTPResponse のインスタンスです。

ブロックと一緒に呼びだされたときはエンティティボディを少しずつ文字列としてブロックに与えます。このとき戻り値の HTTPResponse オブジェクトは有効な body を持ちません。

Dest は時代遅れの引数です。利用しないでください。 dest を指定した場合にはボディを少しずつ取得して順次「dest << ボディの断片」を実行します。

[PARAM] path:
POST先のパスを文字列で指定します。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。
[PARAM] dest:
利用しないでください。
peer_cert -> OpenSSL::X509::Certificate | nil[permalink][rdoc]

サーバの証明書を返します。

SSL/TLS が有効でなかったり、接続前である場合には nil を返します。

[SEE_ALSO] OpenSSL::SSL::SSLSocket#peer_cert

port -> Integer[permalink][rdoc]

接続するポート番号を返します。

post(path, data, header = nil, dest = nil) -> Net::HTTPResponse[permalink][rdoc]
post(path, data, header = nil, dest = nil) {|body_segment| .... } -> Net::HTTPResponse

サーバ上の path にあるエンティティに対し文字列 data を POST で送ります。

返り値は Net::HTTPResponse のインスタンスです。

ブロックと一緒に呼びだされたときはエンティティボディを少しずつ文字列としてブロックに与えます。このとき戻り値の HTTPResponse オブジェクトは有効な body を持ちません。

POST する場合にはヘッダに Content-Type: を指定する必要があります。もし header に指定しなかったならば、 Content-Type として "application/x-www-form-urlencoded" を用います。

dest は時代遅れの引数です。利用しないでください。 dest を指定した場合にはボディを少しずつ取得して順次「dest << ボディの断片」を実行します。

[PARAM] path:
POST先のパスを文字列で指定します。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。
[PARAM] dest:
利用しないでください。

1.1 互換モードの場合は、レスポンスに応じて例外が発生します。また、返り値が [レスポンスオブジェクト, そのボディ] となります。

例:

# net/http version 1.1
response, body = http.post('/cgi-bin/search.rb', 'query=subject&target=ruby')

# version 1.2
response = http.post('/cgi-bin/search.rb', 'query=subject&target=ruby')

# using block
File.open('save.html', 'w') {|f|
  http.post('/cgi-bin/search.rb', 'query=subject&target=ruby') do |str|
    f.write str
  end
}

[SEE_ALSO] Net::HTTP#request_post

request_post(path, data, header = nil) -> Net::HTTPResponse[permalink][rdoc]
request_post(path, data, header = nil) {|response| .... } -> Net::HTTPResponse
post2(path, data, header = nil) -> Net::HTTPResponse
post2(path, data, header = nil) {|response| .... } -> Net::HTTPResponse

サーバ上の path にあるエンティティに対し文字列 data を POST で送ります。返り値は Net::HTTPResponse のインスタンスです。

header が nil でなければ、リクエストを送るときにその内容を HTTP ヘッダとして送ります。 header は { 'Accept' = > '*/*', ... } という形のハッシュでなければいけません。

ブロックとともに呼び出されたときは、エンティティボディをソケットから読み出す前に、接続を維持した状態で Net::HTTPResponse オブジェクトをブロックに渡します。

POST する場合にはヘッダに Content-Type: を指定する必要があります。もし header に指定しなかったならば、 Content-Type として "application/x-www-form-urlencoded" を用います。

[PARAM] path:
POST先のエンティティのパスを文字列で指定します。
[PARAM] data:
POSTするデータを与えます。
[PARAM] header:
リクエストの HTTP ヘッダをハッシュで指定します。

post2 は時代遅れなので使わないでください。

# 例
response = http.request_post('/cgi-bin/nice.rb', 'datadatadata...')
p response.status
puts response.body          # body is already read

# using block
http.request_post('/cgi-bin/nice.rb', 'datadatadata...') {|response|
  p response.status
  p response['content-type']
  response.read_body do |str|   # read body now
    print str
  end
}

[SEE_ALSO] Net::HTTP#post, Net::HTTPResponse#read_body

propfind(path, body, initheader = {'Depth' => '0'}) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に PROPFIND リクエストをヘッダを initheader, ボディを body として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] body:
リクエストのボディを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Propfind

proppatch(path, body, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に PROPPATCH リクエストをヘッダを initheader, ボディを body として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] body:
リクエストのボディを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Proppatch

proxy? -> bool[permalink][rdoc]

プロクシを介して接続するなら真を返します。

[SEE_ALSO] Net::HTTP.Proxy

proxy_address -> String|nil[permalink][rdoc]
proxyaddr -> String|nil

プロクシ経由で接続する HTTP オブジェクトならプロクシのアドレスを返します。

そうでないなら nil を返します。

proxyaddr は時代遅れのメソッドです。

[SEE_ALSO] Net::HTTP#proxy_address=, Net::HTTP#proxy_port, Net::HTTP.new

proxy_address=(address)[permalink][rdoc]

プロクシのアドレス(ホスト名、IPアドレス)を指定します。

Net::HTTP#start で接続する前に設定する必要があります。

[PARAM] address:
プロクシのホスト名、もしくはIPアドレスを表す文字列

[SEE_ALSO] Net::HTTP#proxy_address=, Net::HTTP#proxy_port, Net::HTTP.new

proxy_from_env=(boolean)[permalink][rdoc]

プロクシ情報を環境変数から得るかどうかを指定します。

Net::HTTP#start で接続する前に設定する必要があります。

[PARAM] boolean:
プロクシ情報を環境変数から得るかどうかを指定する真偽値

[SEE_ALSO] Net::HTTP#proxy_from_env?

proxy_from_env? -> bool[permalink][rdoc]

プロクシ情報を環境変数から得る場合に true を返します。

基本的に Net::HTTP.newNet::HTTP.start の proxy_address 引数に :ENV を渡した場合に true になります。

環境変数 http_proxy が定義されていなくともこの値は true を返します。その場合にはプロクシは利用されず直接サーバに接続します。

[SEE_ALSO] Net::HTTP#proxy_from_env=

proxy_pass -> String|nil[permalink][rdoc]

プロクシ経由で接続し、さらにプロクシのユーザ認証をする HTTP オブジェクトなら認証のパスワードをを返します。

そうでないなら nil を返します。

[SEE_ALSO] Net::HTTP#proxy_pass=, Net::HTTP#proxy_user, Net::HTTP.new

proxy_pass=(pass)[permalink][rdoc]

プロクシのユーザ認証のパスワードを設定します。

Net::HTTP#start で接続する前に設定する必要があります。

[PARAM] pass:
パスワード文字列

[SEE_ALSO] Net::HTTP#proxy_pass, Net::HTTP#proxy_user, Net::HTTP.new

proxy_port -> Integer|nil[permalink][rdoc]
proxyport -> Integer|nil

プロクシのポート番号を返します。

プロクシを使わない場合は nil を返します。

proxyport は時代遅れのメソッドです。

[SEE_ALSO] Net::HTTP#proxy_port=, Net::HTTP#proxy_address, Net::HTTP.new

proxy_port=(port)[permalink][rdoc]

プロクシのポート番号を設定します。

Net::HTTP#start で接続する前に設定する必要があります。

[PARAM] port:
ポート番号(整数、文字列)

[SEE_ALSO] Net::HTTP#proxy_port, Net::HTTP#proxy_address, Net::HTTP.new

proxy_uri -> String|nil[permalink][rdoc]

このメソッドは内部用なので使わないでください。

環境変数 http_proxy から得られるプロクシの URI を返します。

proxy_user -> String|nil[permalink][rdoc]

プロクシ経由で接続し、さらにプロクシのユーザ認証をする HTTP オブジェクトなら認証のユーザ名をを返します。

そうでないなら nil を返します。

[SEE_ALSO] Net::HTTP#proxy_pass, Net::HTTP#proxy_user=, Net::HTTP.new

proxy_user=(user)[permalink][rdoc]

プロクシのユーザ認証のユーザ名を設定します。

Net::HTTP#start で接続する前に設定する必要があります。

[PARAM] user:
ユーザ名文字列

[SEE_ALSO] Net::HTTP#proxy_pass, Net::HTTP#proxy_user, Net::HTTP.new

put(path, data, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバ上の path にあるエンティティに対し文字列 data を PUT で送ります。

返り値は Net::HTTPResponse のインスタンスです。

[PARAM] path:
取得するエンティティのパスを文字列で指定します。
[PARAM] data:
送るデータを文字列で指定します。
[PARAM] initheader:
リクエストの HTTP ヘッダをハッシュで指定します。

[SEE_ALSO] Net::HTTP#request_put

1.1 互換モードの場合は、レスポンスに応じて例外が発生します。

request_put(path, data, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]
request_put(path, data, initheader = nil) {|response| .... } -> Net::HTTPResponse
put2(path, data, initheader = nil) -> Net::HTTPResponse
put2(path, data, initheader = nil) {|response| .... } -> Net::HTTPResponse

サーバ上の path にあるエンティティに対し文字列 data を PUT で送ります。

返り値は Net::HTTPResponse のインスタンスです。

ブロックとともに呼び出されたときは、ボディをソケットから読み出す前に、接続を維持した状態で Net::HTTPResponse オブジェクトをブロックに渡します。

[PARAM] path:
取得するエンティティのパスを文字列で指定します。
[PARAM] data:
送るデータを文字列で指定します。
[PARAM] initheader:
リクエストの HTTP ヘッダをハッシュで指定します。

put2 は時代遅れなので使わないでください。

[SEE_ALSO] Net::HTTP#put

read_timeout -> Integer|nil[permalink][rdoc]

読みこみ(read(2)) 一回でブロックしてよい最大秒数を返します。

この秒数たっても読みこめなければ例外 Net::ReadTimeout を発生します。

nilはタイムアウトしないことを意味します。

デフォルトは 60 (秒)です。

[SEE_ALSO] Net::HTTP#open_timeout, Net::HTTP#read_timeout=

read_timeout=(seconds)[permalink][rdoc]

読みこみ(read(2)) 一回でブロックしてよい最大秒数を設定します。

この秒数たっても読みこめなければ例外 Net::ReadTimeout を発生します。

nilを設定するとタイムアウトしなくなります。

このタイムアウト秒数はサーバとやりとりするメソッドで有効です。

デフォルトは 60 (秒)です。

[PARAM] second:
待つ秒数を指定します。

[SEE_ALSO] Net::HTTP#open_timeout, Net::HTTP#read_timeout

request(request, data = nil) -> Net::HTTPResponse[permalink][rdoc]
request(request, data = nil) {|response| .... } -> Net::HTTPResponse

Net::HTTPRequest オブジェクト request をサーバに送信します。

POST/PUT の時は data も与えられます (GET/HEAD などで data を与えると ArgumentError を発生します)。

ブロックとともに呼びだされたときはソケットからボディを読みこまずに Net::HTTPResponse オブジェクトをブロックに与えます。

[PARAM] request:
リクエストオブジェクトを与えます。
[PARAM] data:
リクエストのボディを文字列で与えます。
[EXCEPTION] ArgumentError:
dataを与えるべきでないリクエストでdataを与えた場合に発生します。

[SEE_ALSO] Net::HTTP#send_request

send_request(name, path, data = nil, header = nil) -> Net::HTTPResponse[permalink][rdoc]

HTTP リクエストをサーバに送り、そのレスポンスを Net::HTTPResponse のインスタンスとして返します。

[PARAM] name:
リクエストのメソッド名を文字列で与えます。
[PARAM] path:
リクエストのパスを文字列で与えます。
[PARAM] data:
リクエストのボディを文字列で与えます。
[PARAM] header:
リクエストのヘッダをハッシュで与えます。
response = http.send_request('GET', '/index.html')
puts response.body

[SEE_ALSO] Net::HTTP#request

set_debug_output(io) -> ()[permalink][rdoc]

デバッグ出力の出力先を指定します。このメソッドは深刻なセキュリティホールの原因になるため、デバッグ以外では決して使わないでください。

io に nil を指定するとデバッグ出力を止めます。

[PARAM] io:
出力先を指定します。このオブジェクトはメソッド << を持っている必要があります。
http.set_debug_output($stderr)
ssl_timeout -> Integer | nil[permalink][rdoc]

SSL/TLS のタイムアウト秒数を返します。

設定されていない場合は nil を返します。

[SEE_ALSO] Net::HTTP#ssl_timeout=, OpenSSL::SSL::SSLContext#ssl_timeout

ssl_timeout=(sec)[permalink][rdoc]

SSL/TLS のタイムアウト秒数を設定します。

HTTP セッション開始時(Net::HTTP#start など)に OpenSSL::SSL::SSLContext#ssl_timeout= でタイムアウトを設定します。

デフォルト値は OpenSSL::SSL::SSLContext#ssl_timeout= と同じで、OpenSSL のデフォルト値(300秒)を用います。

[PARAM] sec:
タイムアウト秒数

[SEE_ALSO] Net::HTTP#ssl_timeout, OpenSSL::SSL::SSLContext#ssl_timeout=

ssl_version -> String | Symbol | nil[permalink][rdoc]

利用するプロトコルの種類を返します。

[SEE_ALSO] Net::HTTP#ssl_version=

ssl_version=(ver)[permalink][rdoc]

利用するプロトコルの種類を指定します。

OpenSSL::SSL::SSLContext.new で指定できるものと同じです。

[PARAM] ver:
利用するプロトコルの種類(文字列 or シンボル)

[SEE_ALSO] Net::HTTP#ssl_version, OpenSSL::SSL::SSL#ssl_version=

start -> self[permalink][rdoc]
start {|http| .... } -> object

TCP コネクションを張り、HTTP セッションを開始します。すでにセッションが開始していたら例外 IOError を発生します。

ブロックを与えた場合には自分自身をそのブロックに渡し、ブロックが終わったときに接続を閉じます。このときはブロックの値を返り値とします。

ブロックを与えなかった場合には自分自身を返します。利用後にはこのオブジェクトを Net::HTTP#finish してください。

[EXCEPTION] IOError:
すでにセッションが開始していた場合に発生します。
[EXCEPTION] Net::OpenTimeout:
接続がタイムアウトしたときに発生します
trace(path, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に TRACE リクエストをヘッダを initheader として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Trace

unlock(path, body, initheader = nil) -> Net::HTTPResponse[permalink][rdoc]

サーバの path に UNLOCK リクエストをヘッダを initheader, ボディを body として送ります。

レスポンスを Net::HTTPResponse のオブジェクトで返します。

[PARAM] path:
リクエストを送るパスを文字列で与えます。
[PARAM] body:
リクエストのボディを文字列で与えます。
[PARAM] initheader:
リクエストのヘッダを「文字列=>文字列」のハッシュで与えます。

[SEE_ALSO] Net::HTTP::Unlock

use_ssl=(bool)[permalink][rdoc]

HTTP で SSL/TLS を使うかどうかを設定します。

HTTPS 使う場合は true を設定します。セッションを開始する前に設定をしなければなりません。

デフォルトでは false です。つまり SSL/TLS を有効にするには必ず use_ssl = true を呼ぶ必要があります。

[PARAM] bool:
SSL/TLS を利用するかどうか
[EXCEPTION] IOError:
セッション開始後に設定を変更しようとすると発生します
use_ssl? -> bool[permalink][rdoc]

SSLを利用して接続する場合に真を返します。

[SEE_ALSO] net/https, openssl

verify_callback -> Proc[permalink][rdoc]

自身に設定されている検証をフィルタするコールバックを返します。

デフォルトのコールバックが設定されている場合には nil を返します。

[SEE_ALSO] Net::HTTP#verify_callback=, OpenSSL::X509::Store#verify_callback, OpenSSL::SSL::SSLContext#verify_callback

verify_callback=(proc)[permalink][rdoc]

検証をフィルタするコールバックを設定します。

詳しくは OpenSSL::X509::Store#verify_callback=OpenSSL::SSL::SSLContext#verify_callback= を見てください。

[PARAM] proc:
設定する Proc オブジェクト

[SEE_ALSO] Net::HTTP#verify_callback, OpenSSL::X509::Store#verify_callback=, OpenSSL::SSL::SSLContext#verify_callback=

verify_depth -> Integer[permalink][rdoc]

証明書チェイン上の検証する最大の深さを返します。

[SEE_ALSO] Net::HTTP#verify_depth=, OpenSSL::SSL::SSLContext#verify_depth

verify_depth=(depth)[permalink][rdoc]

証明書チェイン上の検証する最大の深さを設定します。

デフォルトは nil で、この場合 OpenSSL のデフォルト値(9)が使われます。

[PARAM] depth:
最大深さを表す整数

[SEE_ALSO] Net::HTTP#verify_depth, OpenSSL::SSL::SSLContext#verify_depth=

verify_mode -> Integer | nil[permalink][rdoc]

検証モードを返します。

デフォルトは nil です。

verify_mode=(mode)[permalink][rdoc]

検証モードを設定します。

詳しくは OpenSSL::SSL::SSLContext#verify_mode を見てください。クライアント側なので、 OpenSSL::SSL::VERIFY_NONEOpenSSL::SSL::VERIFY_PEER のいずれかを用います。

デフォルトは nil で、VERIFY_NONE を意味します。