同じにやっても動かない

書いてある通りやっているのに動かないのです

open-uriはURLに日本語あるとダメ

open-uriGoogleプレイス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-uriURIに日本語があるとうまくいかないようです。
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でセーブするようにしましょう。