2015-02-09 55 views
0

当我使用谷歌的地方API以自动完成textview.After研究我已经做了application.But当我运行该应用程序我得到下面的错误的地方得到错误使用谷歌API的地方

ERROR

This IP, site or mobile application is not authorized to use this API key 

CODE

public class GetPlaces extends AsyncTask<String, String, String> { 

    private Context context; 

    private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place"; 
    private static final String TYPE_AUTOCOMPLETE = "/autocomplete"; 
    private static final String OUT_JSON = "/json"; 

    private static final String API_KEY = "key=My Server Key"; 

    private String INPUT = "INPUT"; 

    private HttpURLConnection urlConnection = null; 
    private StringBuilder stringBuilder = null; 
    private URL url; 
    private InputStream iStream = null; 


    public GetPlaces(Context context, String INPUT) { 
     this.context = context; 
     this.INPUT = INPUT; 
     this.execute(INPUT); 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     String response = ""; 

     try { 
      INPUT = "input=" + URLEncoder.encode(params[0], "UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 

     } 

     String types = "types=geocode"; 

     // Sensor enabled 
     String sensor = "sensor=false"; 

     // Building the parameters to the web service 
     String parameters = INPUT + "&" + types + "&" + API_KEY + "&" + sensor; 

     stringBuilder = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON); 
     stringBuilder.append("?" + parameters); 


     //connections is established here 
     try { 
      url = new URL(stringBuilder.toString()); 

      urlConnection = (HttpURLConnection) url.openConnection(); 

      // Reading data from url 
      iStream = urlConnection.getInputStream(); 

      BufferedReader br = new BufferedReader(new InputStreamReader(iStream)); 

      StringBuffer sb = new StringBuffer(); 

      String line = ""; 
      while ((line = br.readLine()) != null) { 
       sb.append(line); 
      } 

      response = sb.toString(); 
      Log.e("Response", response); 

      br.close(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       iStream.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      urlConnection.disconnect(); 
     } 

     return response; 
    } 
} 

PS-我知道这已经被回答指出,美不需要Android的关键,但你服务器密钥,所以,我是用我的IP地址,但仍是同样的错误。

+0

使用google api控制台为您的应用程序生成api密钥并使用该api密钥 – 2015-02-09 08:15:42

回答

0

请检查link并创建一个项目&生成API密钥。使用下面一行API密钥:

private static final String API_KEY = "key=My Server Key"; 

为了您上面的代码的API密钥将服务器API密钥,而不是Android应用程序API密钥。如果您仍然发现任何问题,请告诉我。

+0

是的,先生我已经提到过我使用本地IP地址生成服务器密钥 – Anuj 2015-02-09 08:32:47

+0

请不要在此提供任何IP地址。只需空白框并生成。 – sUndeep 2015-02-09 08:35:24

+0

ok lemme试试看 – Anuj 2015-02-09 08:37:37