2013-08-26 88 views
1

以下(以及其他类似的)HTTP请求到谷歌的地理编码API出来正确当我把它贴到我的浏览器谷歌地理编码API HTTP请求被拒绝 - 红宝石

http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false 

当我做红宝石以下

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" 
} 

这是同样的错误,我得到的时候没有设置日例如,“传感器”属性,但这不是问题。

有什么建议吗?

回答

1

您需要使用#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" 
+0

你是一个绅士,一位学者!我从中得到HTTP请求代码的SO问题甚至有一个评论,作为一个警告,并猜测谁忽略了它?这家伙!谢谢拉尔斯。 –