[Ruby] http通信する時の注意点

Rubyでhttp通信するコードをかいたら、変なところでハマったので忘備録として残します。
http通信するには、Net::HTTPを使うのですが、なぜか例外が発生して困りました。
ソースコードにコメントを書きましたが、レスポンスを取得した時に、response.valueをCallすると例外が発生します。
(responseを確認して、成功でないときにvalueをすると例外になる)
Rubyのリファレンスを読むと丁寧に記載されているのです。
Rubyのリファレンスは読みやすいので、良いです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
web_uri = URI.parse(uri)
http = Net::HTTP.new(web_uri.host, web_uri.port)
http.use_ssl = (web_uri.scheme == "https")
 
response = http.request_post(web_uri.path, params.to_json, make_headers)
case response
when Net::HTTPSuccess
  response
when Net::HTTPClientError, Net::HTTPServerError
  response
else
  # response.value raises Exception...
  raise Ondotori::WebAPI::Api::Errors::HttpAccessError.new("#{response.message}", "#{response.code}", 9995)
end

参考URL

0 件のコメント :

コメントを投稿