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 |
0 件のコメント :
コメントを投稿