open-uriはURLに日本語あるとダメ
open-uriでGoogleプレイスAPIも使えるようになったので、池袋のラーメン屋でも探してみようと思い以下のようなテストをしてみました。
今回はオートコンプリートではなくてテキストサーチで試してみます。
# -*- coding: utf-8 -*- require 'open-uri' url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?queryt=池袋のラーメン屋&sensor=false&types=food&key=MyKey' open(url)
はいはい、またエラーです。
どうもopen-uriはURIに日本語があるとうまくいかないようです。
UTF-8でセーブしたのですが、それでもダメ。
C:/Ruby193p392/lib/ruby/1.9.1/uri/common.rb:176:in `split': bad URI(is not URI?): https://maps.googleapis.com/maps/api/place/autocomplete/json?input=譚ア莠ャ鬧・sensor=false&types=food&key=MyKey (URI::InvalidURIError)
net/httpsを使うことにしました。
この場合にもルート証明書の在り処をopensslに教えてあげないといけないので、そのやり方はこちらを参照ください。
# -*- coding: utf-8 -*- require 'net/https' domain = 'maps.googleapis.com' ssl_port = 443 https = Net::HTTP.new(domain, ssl_port) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_PEER res = https.request_get('/maps/api/place/textsearch/json?query=池袋のラーメン屋&sensor=false&key=MyKey') p res.body
うまくいきました。
ファイルはUTF-8でセーブするようにしましょう。