我已經功能給我Lat Long網從地址:天氣預報如何避免在谷歌地圖API -java OVER_QUERY_LIMIT
public static String[] getLatLongPositions(String address) throws Exception
{
int responseCode = 0;
String api = "http://maps.googleapis.com/maps/api/geocode/xml?address=" + URLEncoder.encode(address, "UTF-8") + "&sensor=true";
//System.out.println("URL : "+api);
URL url = new URL(api);
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection();
httpConnection.connect();
responseCode = httpConnection.getResponseCode();
if(responseCode == 200)
{
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();;
Document document = builder.parse(httpConnection.getInputStream());
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("/GeocodeResponse/status");
String status = (String)expr.evaluate(document, XPathConstants.STRING);
if(status.equals("OK"))
{
expr = xpath.compile("//geometry/location/lat");
String latitude = (String)expr.evaluate(document, XPathConstants.STRING);
expr = xpath.compile("//geometry/location/lng");
String longitude = (String)expr.evaluate(document, XPathConstants.STRING);
return new String[] {latitude, longitude};
}
else
{
throw new Exception("Error from the API - response status: "+status+"street "+ address);
}
}
return null;
}
但很多時候我得到OVER_QUERY_LIMIT所以我儘量睡了一會兒,然後再次運行我的功能添加此:
if(status.equals("OVER_QUERY_LIMIT")){
Thread.sleep(1000);
getLatLongPositions(address);
}
但當getLatLongPositions在這條線再次遞歸我得到空運行responseCode = httpConnection.getResponseCode();
我怎樣才能避免這個問題? 也在這個函數中有些地址沒有錯誤,但是當我再次運行這個函數時,我得到這些以前很好的地址的錯誤。