0
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 和我的密钥。它总是给我 status request denied 。我尝试使用调试密钥库和新密钥库制作很多密钥,但没有任何效果。这是谷歌的示例网址。它对我不起作用。如果您想提供有关新密钥的解决方案,请向我提供有关如何获取有效调试密钥的详细过程。请非常详细。如果您想提供有关传感器参数的解决方案,它已经在那里。如果你想要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 解析器类创建了一个全新的项目。我仍然收到请求被拒绝。有人能帮我吗?

4

3 回答 3

2

Google Places API 使用 API 密钥来识别您的应用程序。API 密钥通过 Google API 控制台进行管理。在开始使用 API 之前,您需要自己的 API 密钥。激活 Places API 并创建您的密钥。点击这里生成api密钥

Google 地方信息 API

尝试一下。祝一切顺利。

于 2013-04-03T10:53:45.877 回答
1

1)如何创建KeyStore

Project >> Export >> ExportAndroidApplication >> Next >> Create New Keystore (Remember Keystore Path) >> Fill All Detail >> ...etc

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

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

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

有关更多详细信息,请转到此处

现在你得到了像这样的指纹

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

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

于 2013-04-03T10:19:37.033 回答
1

它终于起作用了,所以我所做的是

  • 从 api 控制台删除我的旧 api 项目。
  • 创建了一个新项目。
  • 仅启动 google places api 服务。
  • 点击试用链接
  • 我的浏览器使用它创建的默认键给了我正确的结果。
  • 从 url 字段复制密钥。
  • 在我的应用程序中使用它。有用。欢呼!:) 我没有创建新的 android 密钥。
于 2013-04-04T05:45:03.617 回答