Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > net/httpライブラリ > Net::HTTPクラス

class Net::HTTP

クラスの継承リスト: Net::HTTP < Object < Kernel < BasicObject
aliases: HTTPSession

要約

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

目次

特異メソッド
Proxy default_port http_default_port get get_print get_response https_default_port is_version_1_1? version_1_1? is_version_1_2? version_1_2? new post_form proxy_address proxy_class? proxy_pass proxy_port proxy_user start version_1_1 version_1_2
インスタンスメソッド
active? started? address ca_file ca_file= ca_path ca_path= cert cert= cert_store cert_store= ciphers ciphers= close_on_empty_response close_on_empty_response= continue_timeout continue_timeout= copy delete finish get get2 request_get head head2 request_head key key= lock mkcol move open_timeout open_timeout= options patch peer_cert port post post2 request_post propfind proppatch proxy? proxy_address proxyaddr proxy_pass proxy_port proxyport proxy_user put put2 request_put read_timeout read_timeout= request send_request set_debug_output ssl_timeout ssl_timeout= ssl_version ssl_version= start trace unlock use_ssl= use_ssl? verify_callback verify_callback= verify_depth verify_depth= verify_mode verify_mode=

特異メソッド

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

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

もしくは

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? -> bool[permalink][rdoc]
is_version_1_1? -> bool

ライブラリの動作がバージョン1.1互換である場合に真を返します。

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

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

ライブラリの動作がバージョン1.2互換である場合に真を返します。

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

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

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

明示的にプロクシのホスト名とポート番号を指定してプロクシを利用することもできます。 このときには 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 = nil, proxy_port = nil, proxy_user=nil, proxy_pass=nil) -> Net::HTTP[permalink][rdoc]
start(address, port = 80, proxy_addr = nil, proxy_port = nil, proxy_user=nil, proxy_pass=nil) {|http| .... } -> object

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

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

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

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

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:
プロクシの認証のパスワードを指定します。

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

version_1_1 -> ()[permalink][rdoc]

ライブラリの動作をバージョン1.1互換にします。

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

version_1_2 -> ()[permalink][rdoc]

ライブラリの動作をバージョン1.2互換、つまり 通常の動作にします。

[SEE_ALSO] Net::HTTP.version_1_1, 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 互換モードの場合は、レスポンスに応じて例外が発生します。

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

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=

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]

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

この秒数たってもコネクションが 開かなければ例外 TimeoutError を発生します。 デフォルトは nil(タイムアウトしない)です。

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

open_timeout=(seconds)[permalink][rdoc]

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

この秒数たってもコネクションが 開かなければ例外 TimeoutError を発生します。 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]

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

[SEE_ALSO] Net::HTTP.new

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

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

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

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

[SEE_ALSO] Net::HTTP.Proxy

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

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

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

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

[SEE_ALSO] Net::HTTP.Proxy

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

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

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

[SEE_ALSO] Net::HTTP.Proxy

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)) 一回でブロックしてよい最大秒数 を返します。

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

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

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

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

read_timeout=(seconds)[permalink][rdoc]

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

この秒数たっても読みこめなければ例外 TimeoutError を発生します。 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:
すでにセッションが開始していた場合に発生します。
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 を意味します。