使用Google Places API REQUEST_DENIED

时间:2013-05-14 07:31:39

标签: android google-places-api

我正在使用文字搜索Google Places API开发Android应用程序。目标是给出一个地址并获得经度和经度,以便我可以在地图上标记它。 为此,我将以下请求发送到Google商家信息:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=46+Rue+Emile+Raspail+Arcueil&sensor=true&key=MY_API_KEY

使用此代码:

public class GeoLocRDV {

    private LatLng pos;

    private static final String API_KEY = " xxxxx_MY_KEY ";
    private static final String PLACES_TEXT_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/textsearch/json?";

    public GeoLocRDV(String rdvPlace){
        String url;

        try {
            url = PLACES_TEXT_SEARCH_URL+"query=" + URLEncoder.encode(rdvPlace,"UTF-8") + "&sensor=true&key=" + API_KEY;
            Log.e("DEBUG HTTP", url);

            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response;

            response = httpclient.execute(new HttpGet(url));
            StatusLine statusLine = response.getStatusLine();

            if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                out.close();
                String responseString = out.toString();

                Log.e("DEBUG RESP", responseString);

                JSONObject jsonObj = new JSONObject(responseString);
                JSONArray results = (JSONArray) jsonObj.get("results");

                Log.e("DEBUG JSON", results.toString());

                double rdvLat = (Double) results.getJSONObject(0).getJSONObject("geometry").getJSONObject("location").get("lat");
                Log.e("DEBUG JSON lat", Float.toString((float) rdvLat));

                double rdvLng = (Double) results.getJSONObject(0).getJSONObject("geometry").getJSONObject("location").get("lng");
                Log.e("DEBUG JSON lng", Float.toString((float) rdvLng));

                this.pos = new LatLng(rdvLat, rdvLng);
                Log.e("DEBUG GEO", pos.toString());

            }else{
                response.getEntity().getContent().close();
            }
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

不幸的是我得到了这个回复:

{
    "html_attributions" : [],
    "results" : [],
    "status" : "REQUEST_DENIED"
}

我试图:

  • 将“sensor”参数切换为“true”和“false”
  • 将https更改为http
  • 确认我的密钥已正确复制/粘贴,并且与我的清单中的密钥相对应
  • 我还访问了api控制台,然后访问了SERVICES,点击了Active services选项卡并验证了'Places API'是否已打开。点击了?并“尝试一下!”旁边的链接。它还返回了相同的JSON(REQUEST_DENIED)

我在StackOverflow上读到我可以尝试将端口地址更改为443以获取Places API的响应,但我不知道该怎么做。

最后,我指定在获取API密钥后激活了Google商家信息服务(因为我也使用的是Maps API)并且它是Android密钥(不是服务器或浏览器),但它不应该是一个问题因为密钥适用于整个应用程序。

我没有想法解决这个请求问题,所以我希望有人可以帮助我。

提前致谢。

0 个答案:

没有答案