コピペコードで快適生活

明日使えるソースを自分のために

RubyでHTTPリクエストを送る

たまにしか使わなくてよく忘れるのでメモします。

require 'net/http'
require 'uri'

uri = URI.parse("http://kinosuke.hatenablog.jp/")

# when get request
req = Net::HTTP::Get.new("#{uri.path}?#{uri.query}")

# when post request
# req = Net::HTTP::Post.new(uri.path)
# req.set_form_data({first_name: 'taro', last_nem: 'yamada'}, ';')

# when use basic auth
# req.basic_auth('username', 'passowrd')

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == 'https') # これ無いとSSLページ接続時に「end of file reached (EOFError)」というエラー出る
res = http.request(req) # keep-alive使わない版
res = http.start {|h| h.request(req) } # keep-alive使う版。ブロックが閉じた時点でセッションを閉じる 

case res
when Net::HTTPSuccess, Net::HTTPRedirection
  # OK
  puts res.code
  puts res.body
else
  # NG
  puts res.code
  puts res.body
end