2012-10-25 54 views
3

我一直在嘗試使用新的地理定位API。我也有一個API密鑰。 但不知何故,輸出結果爲'未找到'。 有人可以告訴我錯誤在哪裏嗎?谷歌地圖通過Ruby實現地理定位API

require 'net/http' 
require 'uri' 
require 'json' 
require 'httparty' 


lac=50039 
mnc=86 
cid=15471 
mcc=404 
rssi=-69 


    cell_towers = [{:cellId => cid, 
    :locationAreaCode => lac, 
    :mobileCountryCode => mcc, 
    :mobileNetworkCode => mnc, 
    :signalStrength => rssi }] 

    param = {:cellTowers => cell_towers} 
    puts param.to_json 
    #puts "https://www.googleapis.com/maps/api/geolocation/v1/geolocate?key=#{api_key}" 

     response = HTTParty.post("https://www.googleapis.com/maps/api/geolocation/v1/geolocate?key=my_key", 
     :body => param.to_json, 
     :header => {"Content-Type" => "application/json"}) 
     puts response 
     temp= response.body 
     puts temp 

上面的代碼給出的輸出是:

{ 「發射塔」:[{ 「CELLID」:15471 「locationAreaCode」:50039, 「mobileCountryCode」:404, 「mobileNetworkCode」:86, 「signalStrength」: - 69}]} 未找到 未找到

谷歌地圖地理位置API的文檔鏈接: https://developers.google.com/maps/documentation/business/geolocation/

當我手動創建一個json對象並使用'curl'命令在命令提示符下運行它時,輸出就出來了。

回答

2

所以我用這個完全一樣的問題苦苦掙扎,但使用的.Net一個簡單的HTTP POST ...

似乎關於URL是錯誤的API文檔。

相反的:https://www.googleapis.com/maps/api/geolocation/v1/geolocate?key=API_key

它實際上是:https://www.googleapis.com/geolocation/v1/geolocate?key=API_key

希望這有助於!

+0

謝謝!我更改了網址。 「未找到」錯誤不再顯示。 但是,我收到代碼爲403的錯誤,說「每日限制未經驗證的使用超出。繼續使用需要註冊。」無法弄清楚爲什麼。驗證已完成,我有一個API密鑰,我也檢查了API控制檯。你能幫助我嗎? – Kavya

+0

您是否有通過API控制檯存檔的信用卡?由於這是一個商業API,我相信這是必需的。之後,您應該可以使用您每天分配的100個請求。 – BeerGuy

+0

問題解決了,我必須爲SSL認證設置verify_none。非常感謝 ! – Kavya

1

在您的幫助下,我可以解決問題。謝謝! 以爲我會分享代碼。它可能會有所幫助。

cell_towers = [{:cellId => cid, 
       :locationAreaCode => lac, 
       :mobileCountryCode => mcc, 
       :mobileNetworkCode => mnc, 
       :signalStrength => rssi }] 

param = {:cellTowers => cell_towers} 
uri = URI.parse('https://www.googleapis.com/geolocation/v1/geolocate?key=your_key') 

http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
request = Net::HTTP::Post.new(uri.request_uri) 
request.body=param.to_json 
request["Content-Type"]="application/json" 
response = http.request(request) 
result=response.body 
res=JSON.parse(result) 
lat=res["location"]["lat"] 
long=res["location"]["lng"]