簡體   English   中英

使用Google Maps API REQUEST_DENIED

[英]REQUEST_DENIED using Google Maps API

我正在使用以下方法使用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;
  }

我傳遞的網址是: http : //maps.googleapis.com/maps/api/directions/json?sensor=false&origin=PO+BX+4471,TUSTIN,CA,92782&destination=700+Civic+Center+Drive + West +-+ 3rd + Floor,Santa + Ana,CA-California,92702 ,它調用了Google Maps API。

當我在瀏覽器中鍵入此URL時,我將以JSON的方式獲取路由信息。 當使用上述方法調用它時,我得到:

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

在這一點上,我不確定要去哪里。

問題是由於我的軟件使用的是HTTP Post,而Google只接受get。 我更改為致電以獲取並解決了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM