当前位置: 首页 > 知识库问答 >
问题:

使用Google Maps API的REQUEST_DENIED

房星光
2023-03-14

我使用以下方法使用Apache HTTP客户端调用Google Maps API。

  protected synchronized String submitUrl(String url) throws AjApiException {
    //split off the parameters for the post
    String uri = extractUri(url);
    HttpPost httpPost = new HttpPost(uri);
    httpPost.setEntity(buildHttpEntityParmsFromUrl(url));
    String json = null;
    try {
      HttpResponse response = httpClient.execute(httpPost);
      HttpEntity entity = response.getEntity();
      //should be JSON
      Header header = entity.getContentType();
      log.debug("Content type:" + header.getValue());
      //read the body
      json = readBody(entity.getContent());
      // Read any remaining portions of the entity so we don't keep the data around
      EntityUtils.consume(entity);
    }
    catch (ClientProtocolException cpe) {
      String msg = "Error using:" + url;
      log.error(msg, cpe);
      throw new AjApiException(msg, cpe);
    }
    catch (IOException ioe) {
      String msg = "Error using:" + url;
      log.error(msg, ioe);
      throw new AjApiException(msg, ioe);
    }
    finally {
      httpPost.releaseConnection();
    }
    log.debug("Results:" + json);

    if(json.startsWith(KeyNames.ERROR_INDICATOR)){
      List<String> parts = TranslationHelper.parseCsvLine(json.trim());
      String msg = parts.get(1);
      int errRsn;
      try {
        errRsn = Integer.parseInt(parts.get(2));
      }
      catch (NumberFormatException nfe) {
        errRsn = KeyNames.ERRRSN_UNDEFINED;
      }
      throw new AjApiException(msg, errRsn);
    }
    else{
      return json;
    }
  }


  /**
   * From a URL, extract everything up to the parameters
   * @param url the url
   * @return the resource path from the URL
   */
  public static final String extractUri(String url){
    String result = null;
    int pos = url.indexOf("?");
    if(pos>=0){
      //strip the parms
      result = url.substring(0, pos);
    }
    else{
      //no parms, just return
      result = url;
    }

    return result;
  }

  /**
   * Remove the parameters coded on the URL and create an
   * HttpParams object with those parameters
   * @param url the URL
   * @return the http parameters
   */
  public static UrlEncodedFormEntity buildHttpEntityParmsFromUrl(String url){
    List<NameValuePair> formparams = new ArrayList<NameValuePair>();

    int pos = url.indexOf("?");
    if(pos>=0){
      //process parms
      String queryString = url.substring(pos + 1).trim();
      if(queryString.length() > 0){
        String[] queryParms = queryString.split("&");
        for(String queryParm:queryParms){
          String[] parts = queryParm.split("=");
          formparams.add(new BasicNameValuePair(parts[0], parts[1]));
        }
      }
    }

    UrlEncodedFormEntity result;
    try {
      result = new UrlEncodedFormEntity(formparams);
    }
    catch (UnsupportedEncodingException uee) {
      throw new IllegalStateException(uee);
    }

    return result;
  }

我传入的url是:http://maps.googleapis.com/maps/api/directions/json?sensor=false&origin=PO+BX+4471,TUSTIN,CA,92782&Destination=700+Civic+Center+Drive+West+-+3RD+Flool,Santa+Ana,CA-California,92702调用谷歌地图API。

{
   "routes" : [],
   "status" : "REQUEST_DENIED"
}

在这一点上,我不知道该去哪里。

共有1个答案

谢同化
2023-03-14

问题是由于我的软件使用HTTP Post而Google只接受GET。我改打电话来解决这个问题。

 类似资料:
  • 我正在使用R中的ggmap包和Google Maps API对街道地址(n=18,000)进行地理编码,据我所知,每天对地址的地理编码请求限制为2,500次。 我正在使用的地理编码脚本非常简单,适用于我尝试过的小型测试df(如下面的示例),但我想知道在接下来的~7天内为每个2500行块拼接所有18000个位置的最终地理编码df的最简单/优雅的方法。 我考虑过只按天对它们进行编号,然后在最后将它们绑

  • 我在Scala2.11.1和Hzaelcast 3.5中使用kryo进行序列化。我试图将数据放在hazelcast映射中,但我得到了KryoException 下面是我的用户类序列化程序 现在,当我将用户类对象从Hcast客户端放入相应的映射中时,如下所示 它给了我这些例外: 以下是中的 请帮帮我!!

  • 本文向大家介绍webpack proxy 使用(代理的使用),包括了webpack proxy 使用(代理的使用)的使用技巧和注意事项,需要的朋友参考一下 为什么要写篇文章 这两天的开发中遇到一些需要代理才能解决的问题, 在这里记录一下, 方便以后的查阅. 为什么要用代理 跨域 在开发过程中, 我们的开发环境一般都是http:// localhost, 但是如果需要请求的数据不在本地, 那么我们就

  • 如何使用Spring RestTemplate发送GET请求?其他问题都用了POST,但我需要用get。当我运行这个程序时,程序继续工作,但似乎网络堵塞了,因为它在一个AsyncTask中,当我单击这个按钮后试图运行另一个AsyncTask时,它们将无法工作。 我试着做

  • 问题内容: 最近,我尝试了解 java.math.MathContext 的用法,但未能正确理解。它用于四舍五入。如果是,为什么不四舍五入十进制数字,甚至尾数部分。 从API文档中,我知道它遵循,和规范中指定的标准,但是我没有让他们在线阅读。 如果您对此有任何想法,请告诉我。 问题答案: @贾坦 谢谢您的回答。这说得通。您能否在BigDecimal#round方法的上下文中向我解释MathCont

  • 主要内容:下载 Nexus 3,启动 nexus 服务,访问 nexus 3.x目前 Nexus 分为 Nexus 2 和 Nexus 3 两个大版本,它们是并行的关系。与 Nexus 2 相比,Nexus 3 具有很多优势,例如支持更多的仓库格式、优化了用户的使用界面以及更加强大的搜索功能等等。 目前使用最多的,运行最稳定是 Nexus 2,但随着 Nexus 3 对 Maven 的支持越来越稳定,很多公司和组织都陆续开始使用 Nexus 3。 本节我们将介绍 Nexus