Posted at

Rubyでプロキシ経由でWebAPIを使うときのメモ

More than 3 years have passed since last update.

RubyでWebAPIを使うにあたって


  • プロキシ経由でどうやって接続するの?

  • httpsは?

  • POSTは?

  • レスポンスヘッダやステータスコードもみたいんだけど・・・

みたいなことがよくわからなかったのでメモ。

require 'net/https'

require 'uri'

## プロキシの設定
proxy_addr = 'hogehoge.com'
proxy_port = 8080
proxy_user = 'user_name'
proxy_pass = 'user_password'

## 接続先URLを指定してパース
URL = "http://hogehoge/fuga"
uri = URI.parse(URL)

## リクエストのヘッダーとボディを設定する。POSTメソッドを指定
req = Net::HTTP::Post.new(uri.path)

# リクエストヘッダの指定(指定しない場合は省略可)
req["Content-Type"] = "application/json"
req["Accept"] = "application/json"

# ボディとなるjsonファイルの読み込み(指定しない場合は省略可)
file = File.read("token_req.json")

# リクエストボディを挿入(指定しない場合は省略可)
req.body = file

# 今回はjson形式のテキストファイルを直接挿入しているけど、
# Rubyのハッシュをセットしたい場合には
# req.set_form_data({'name' => 'hoge', 'content' => 'hogehoge'})
# みたいな感じでも書けるらしい

## httpsプロトコル接続用のインスタンスを作成
https = Net::HTTP.new(uri.host, uri.port,proxy_addr, proxy_port, proxy_user, proxy_pass)
https.use_ssl = true # HTTPSで接続(https使わないなら省略可)
https.verify_mode = OpenSSL::SSL::VERIFY_NONE #証明書チェックを無効化(https使わないなら省略可)

## 接続を開始
res = https.start do
https.request(req)
end

## レスポンスステータスを表示
puts res.code

## レスポンスヘッダを表示
res.each_header do |name, val|
puts "#{name}: #{val}"
end

## レスポンスボディを表示
puts res.body