Rubyでhttp通信するコードをかいたら、変なところでハマったので忘備録として残します。
http通信するには、Net::HTTPを使うのですが、なぜか例外が発生して困りました。
ソースコードにコメントを書きましたが、レスポンスを取得した時に、response.valueをCallすると例外が発生します。
(responseを確認して、成功でないときにvalueをすると例外になる)
Rubyのリファレンスを読むと丁寧に記載されているのです。
Rubyのリファレンスは読みやすいので、良いです。
```ruby
`gutter:true;
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
- [ソースコード](https://github.com/k28/ondotori-ruby-client/blob/main/lib/ondotori/webapi/httpwebaccess.rb)
- [Net::HTTPResponse のリファレンス](https://docs.ruby-lang.org/ja/latest/class/Net=3a=3aHTTPResponse.html#I_VALUE)
- [Ruby http通信のリファレンス](https://docs.ruby-lang.org/ja/latest/library/net=2fhttp.html)
0 件のコメント :
コメントを投稿