[英]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.