2015-05-29 120 views
2

我试图构建Android应用程序,可以从Google Geolocation Api中获取用户的位置。我的配置和设置结算帐户Android Google Google Geolocation API返回403错误

我的设置是

  1. 增加配额至100 /请求/用户
  2. 结算帐户设置
  3. 允许的IP:使用异步任务的任何

IM类

// 1. create HttpClient 
 
       HttpClient httpclient = new DefaultHttpClient(); 
 

 
       // 2. make POST request to the given URL 
 
       HttpPost httpPost = new HttpPost("https://www.googleapis.com/geolocation/v1/geolocate?key=API_KEY"); 
 

 
       String json = ""; 
 

 
       // 3. build jsonObject 
 
       JSONObject jsonObject = new JSONObject(); 
 
       jsonObject.accumulate("homeMobileCountryCode", 310); 
 
       jsonObject.accumulate("homeMobileNetworkCode", 410); 
 
       jsonObject.accumulate("radioType", "gsm"); 
 
       jsonObject.accumulate("carrier", "vodafone"); 
 

 
       JSONArray cellTowersArray = new JSONArray();; 
 
       JSONObject cellTowerObject = new JSONObject();; 
 
       cellTowerObject.accumulate("cellId", 42); 
 
       cellTowerObject.accumulate("locationAreaCode", 415); 
 
       cellTowerObject.accumulate("mobileCountryCode", 310); 
 
       cellTowerObject.accumulate("mobileNetworkCode", 410); 
 
       cellTowerObject.accumulate("age", 0); 
 
       cellTowerObject.accumulate("signalStrength", -60); 
 
       cellTowerObject.accumulate("timingAdvance", 15); 
 
       cellTowersArray.put(cellTowerObject); 
 
       jsonObject.accumulate("cellTowers", cellTowersArray); 
 

 
       JSONArray wifiAccessPointsArray = new JSONArray(); 
 
       JSONObject wifiAccessPointObject = new JSONObject(); 
 
       wifiAccessPointObject.accumulate("macAddress", "01:23:45:67:89:AB"); 
 
       wifiAccessPointObject.accumulate("age", 0); 
 
       wifiAccessPointObject.accumulate("channel", 11); 
 
       wifiAccessPointObject.accumulate("signalToNoiseRatio", 40); 
 
       wifiAccessPointsArray.put(wifiAccessPointObject); 
 
       jsonObject.accumulate("wifiAccessPoints", wifiAccessPointsArray); 
 

 
       // 4. convert JSONObject to JSON to String 
 
       json = jsonObject.toString(); 
 

 

 
       // 5. set json to StringEntity 
 
       StringEntity se = new StringEntity(json);; 
 

 
       // 6. set httpPost Entity 
 
       httpPost.setEntity(se); 
 

 
       // 7. Set some headers to inform server about the type of the content 
 
       httpPost.setHeader("Accept", "application/json"); 
 
       httpPost.setHeader("Content-type", "application/json"); 
 

 
       // 8. Execute POST request to the given URL 
 
       HttpResponse httpResponse = httpclient.execute(httpPost); 
 

 
       // 9. receive response as inputStream 
 
       inputStream = httpResponse.getEntity().getContent(); 
 

 
       // 10. convert inputstream to string 
 
       if(inputStream != null) 
 
        result = convertInputStreamToString(inputStream); 
 
       else 
 
        result = "Did not work"; 
 
      } 
 
      catch (MalformedURLException e) { 
 
      \t Log.e("YOUR_APP_LOG_TAG1", "", e); 
 
      } 
 
      catch (IOException e) { 
 
      \t Log.e("YOUR_APP_LOG_TAG2", "", e); 
 
      } 
 
      catch (Exception e) { 
 
      \t Log.e("YOUR_APP_LOG_TAG3", "", e);; 
 
      } 
 

 
      return result; 
 
     } 
 

 
     @Override 
 
     protected void onPostExecute(String result) { 
 
      Log.d("result", result); 
 
      
 
     } 
 
    
 

 
    private static String convertInputStreamToString(InputStream inputStream) throws IOException{ 
 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));; 
 
      String line = ""; 
 
      String result = ""; 
 
      while((line = bufferedReader.readLine()) != null) 
 
       result += line; 
 

 
      inputStream.close(); 
 
      return result; 
 
    } 
 
\t

但I M仍然得到403错误,允许的IP是不是配置

咨询/建议是appreciated.thanks

回答

1

我搞清楚我们自己。如果您在使用Google gelocation Api时遇到问题并获取403错误。那么你必须遵循这些步骤。这是简单的:)

  1. 降低没有API请求0
  2. 然后禁用地理位置API
  3. 创建一个新项目
  4. 然后启用谷歌地理位置API
  5. 添加/增加没有的API请求
  6. 创建了Android API密钥
  7. 服务器API密钥
  8. 使用它

,你是好走,现在你可以使用你的谷歌地理位置API轻松

希望这将有助于 感谢

相关问题