当我将以下(以及其他类似的)HTTP请求粘贴到浏览器中时,对Google地理编码API的请求会正确发出
http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false
当我在Ruby 中执行以下操作时
url = URI.parse('http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
我得到
{
"results" : [],
"status" : "REQUEST_DENIED"
}
例如,这与我在不设置"传感器"属性时遇到的错误相同,但这不是问题所在。
有什么建议吗?
您需要使用#request_uri
而不是#path
,否则您的查询参数将不包括在内:
url = URI.parse('http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false')
url.path
# => "/maps/api/geocode/json"
url.request_uri
# => "/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false"