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

instance method Net::HTTP#post2

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