Google Places API始终拒绝请求

时间:2013-04-03 10:00:30

标签: android android-emulator google-places-api

j.setUrl("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyA712jyN6NY0VXSGf8zgXfXSRhq01O8RLY");

这是我的json url和我的密钥。它总是给我状态请求被拒绝。我尝试使用调试密钥库和新的密钥库来创建大量密钥,但没有任何作用。它是谷歌的示例网址。它对我不起作用。 如果您想提供有关新密钥的解决方案,请向我提供有关如何获取有效调试密钥的详细步骤。请非常详细。 如果您想提供有关传感器参数的解决方案,那么它已经存在。 如果你想要json解析器文件,如下所示

    package com.json;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
public class JSONParser extends AsyncTask<Void, Void, JSONObject> {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    private String url;

    // constructor
    public JSONParser() {

    }

@Override
protected JSONObject doInBackground(Void... params) {
    // defaultHttpClient
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(getUrl());

    HttpResponse httpResponse = null;
    try {
        httpResponse = httpClient.execute(httpPost);
    } catch (ClientProtocolException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    HttpEntity httpEntity = httpResponse.getEntity();
    try {
        is = httpEntity.getContent();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    BufferedReader reader = null;
    try {
        reader = new BufferedReader(
                new InputStreamReader(is, "iso-8859-1"), 8);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    StringBuilder sb = new StringBuilder();
    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        is.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    json = sb.toString();

    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // return JSON String
    return jObj;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

}


编辑:我查看了我的api控制台的报告,它显示了请求已经发出,因为我看到请求我认为密钥不是无效的,因为它正确导致我的api控制台。如果我错了,请纠正我?


编辑2 :所以我尝试了一切新的ID,为我的调试密钥库获得了一个新的api密钥,使用url和json解析器类创建了一个全新的项目。我仍然得到请求被拒绝。有人能帮助我吗?

3 个答案:

答案 0 :(得分:2)

Google Places API使用API​​密钥来标识您的应用。 API密钥通过Google API控制台进行管理。在开始使用API​​之前,您需要自己的API密钥。激活Places API并创建密钥。Click here to generate api key

Google Places API

试试吧。一切顺利。

答案 1 :(得分:1)

1)如何创建KeyStore

项目&gt;&gt;导出&gt;&gt; ExportAndroidApplication&gt;&gt;下一个&gt;&gt;创建新密钥库(记住密钥库路径)&gt;&gt;填写所有详细信息&gt;&gt; ...等

现在您的密钥库和Apk已创建。

2)如何获取证书指纹(MD5)

$ keytool -list -alias alias_name -keystore my-release-key.keystore

了解更多详情go here

现在你有像

这样的指纹

证书指纹(MD5):94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98

3)如何获取MapApiKey click here并粘贴您的MD5然后您将获得MapAPIKey。在您的应用程序中使用此密钥。

答案 2 :(得分:1)

它最终有效,所以我做的是

  • 从api控制台删除我的旧api项目。
  • 创建了一个新项目。
  • 仅开始使用google places api服务。
  • 点击试用链接
  • 我的浏览器使用默认密钥为我提供了正确的结果。
  • 从网址字段中复制密钥。
  • 在我的应用中使用它。有用。欢呼! :) 我没有创建新的安卓密钥。