前提・実現したいこと
とあるAPIにGETアクセスをしていて、http.getを使用するとエラーになるが、http.requestを使った実装に変えると、成功する
違いが分からなくてその違いを教えて欲しい
発生している問題・エラーメッセージ
https://www.okcoin.com/api/v1/ticker.do?symbol=btc_usd
上記のURLにアクセスすると下記のような感じになる
実行コードはこちらです
[10] pry(main)> get_request1(uri) => {"result"=>false, "error_code"=>10000} [11] pry(main)> get_request2(uri) => {"date"=>"1518472945", "ticker"=>{"high"=>"9699.9900", "vol"=>"142.4342", "last"=>"9536.0900", "low"=>"8670.0000", "buy"=>"9537.7400", "sell"=>"9626.3900"}}
http.request
はHTTP::Client.request
が呼ばれているであってますか?http.get
とhttp.request
はどういう違いがあるのでしょうか?- 質問とはちょっとずれますが、APIと連携させる場合にどういったような実装をされていますか?(これは単純な興味です)
該当のソースコード
ruby
1require 'net/http' 2require 'json' 3 4def get_request1(uri) 5 http = Net::HTTP.new(uri.host, uri.port) 6 http.use_ssl = true 7 8 response = http.get(uri.path) 9 JSON.parse(response.body.force_encoding('UTF-8')) 10end 11 12def get_request2(uri) 13 res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| 14 req = Net::HTTP::Get.new(uri) 15 http.request(req) 16 end 17 JSON.parse(res.body) 18end
補足情報(FW/ツールのバージョンなど)
console
1$ r -v 2ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin16]
あなたの回答
tips
プレビュー