質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1899閲覧

ぐるなびAPIで、情報を取得したい

AK12

総合スコア32

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/05/28 03:59

実施済み内容

ぐるなびAPIサイトにて、アカウントは発行済
https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=自分のアクセスキー&freeword=ラーメン
をアドレスバーに打込むことでJSON形式で情報が取得できる。
ここまではわかったのですが、自分のサイトに表示する方法がわかりません。

sample.rb

1require 'net/http' 2require 'uri' 3require 'json' 4require 'logger' 5 6logger = Logger.new('./webapi.log') 7 8params = URI.encode_www_form({keyid:'アクセスキー',id:'fbg4201'}) 9 10uri = URI.parse("https://api.gnavi.co.jp/RestSearchAPI/v3/?#{params}") 11 12begin 13 response = Net::HTTP.start(uri.host, uri.port) do |http| 14 http.open_timeout = 5 15 http.read_timeout = 10 16 http.get(uri.request_uri) 17 18 end 19 case response 20 when Net::HTTPSuccess 21 p JSON.parse(response.body) 22 when Net::HTTPRedirection 23 logger.warn("Redirection: code=#{response.code} message=#{response.message}") 24 else 25 logger.error("HTTP ERROR: code=#{response.code} message=#{response.message}") 26 end 27rescue IOError => e 28 logger.error(e.message) 29rescue TimeoutError => e 30 logger.error(e.message) 31rescue JSON::ParserError => e 32 logger.error(e.message) 33rescue => e 34 logger.error(e.message) 35end
その他判明していること

webapi.logには
E, [2019-05-28T12:35:43.335133 #3690] ERROR -- : end of file reached
という記載がなされています。

別のサイトで
http://zipcloud.ibsnet.co.jp/api/search
こちらを利用し、params部分を
params = URI.encode_www_form(zipcode:6512227)
と入力し実行した際は、情報が取得できたので、ぐるなびの形に合うように情報を変更するだけかと思ったのですが、何かが足りないのでしょうか。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

現状ではhttps://の場合は`HTTP.start`で取得できません。

ruby

1# 2.6.0以降はNet::HTTP.new(uri.host, uri.port).thenでも可 2responce = Net::HTTP.new(uri.host, uri.port).yield_self do |http| 3 http.use_ssl = true 4 http.open_timeout = 5 5 http.read_timeout = 10 6 # 必要ならば 7 # http.start 8 http.get(uri.request_uri) 9 # http.finish 10end

投稿2019/05/28 10:30

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AK12

2019/05/31 01:45

教えて頂いたとおりにやれば、うまくいきました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問