Android cannot get weather forecast from google api

The following code works long before:

class RetreiveWeatherTask extends AsyncTask<Bundle, Void, WeatherData> { private static final String TAG = "WeatherManager"; @Override protected WeatherData doInBackground(Bundle... params) { Utils.log(TAG, "start get weather"); WeatherData weatherData = new WeatherData(); Bundle b = new Bundle(params[0]); double latitude = b.getDouble(REF_LAT); double longtitude = b.getDouble(REF_LONG); try { StringBuilder weatherBuilder = new StringBuilder(); //weatherBuilder.append("http://www.google.com/ig/api?hl=zh-cn&weather=,,,"); weatherBuilder.append("http://www.google.com/ig/api?hl=en-us&weather=,,,"); int la = (int) latitude * 1000000; int lo = (int) longtitude * 1000000; weatherBuilder.append(la); weatherBuilder.append(","); weatherBuilder.append(lo); String weather = weatherBuilder.toString(); HttpGet hg = new HttpGet(weather); // HttpGet hg = new // HttpGet("http://www.google.com/ig/api?hl=zh-cn&weather=,,,39130000,117200000"); HttpClient hc = new DefaultHttpClient(); HttpResponse hr = hc.execute(hg); String responseString = ""; if (hr.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { Utils.logi("", "Location != HttpStatus.SC_OK"); return null; } responseString = EntityUtils.toString(hr.getEntity()); InputStream is = new ByteArrayInputStream(responseString.getBytes()); // URL url = new // URL("http://www.google.com/ig/api?hl=zh-cn&weather=,,,39130000,117200000"); // InputStream is =url.openStream(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(is); NodeList currList = (NodeList) document.getElementsByTagName("current_conditions"); NodeList currList2 = currList.item(0).getChildNodes(); weatherData.weather = new String(currList2.item(0).getAttributes().item(0).getNodeValue()); weatherData.curTemperature = new String(currList2.item(2).getAttributes().item(0).getNodeValue() + "℃"); weatherData.wind = new String(currList2.item(5).getAttributes().item(0).getNodeValue()); Utils.log(TAG, "Get weather = " + weatherData.weather); if (isNeedIconFromNet) { weatherData.iconUrl = new String(currList2.item(4).getAttributes().item(0).getNodeValue()); String url = "http://www.google.com" + weatherData.iconUrl; weatherData.icon = getBitmapByUrl(url); } } catch (Exception e) { Utils.logi("", "Location get temp Exception e"); e.printStackTrace(); } return weatherData; } 

But now it returns the String: Unsupported API.

Please help me. Is google api closed? PS. I am in China.

+2
android weather-api
source share
2 answers

Yes, it looks like Google has stopped the undocumented weather api service.

 XML Parsing Error: syntax error Location: http://www.google.com/ig/api?weather=delhi Line Number 1, Column 1:Unsupported API ^ 

You can try yahoo weather or http://www.wunderground.com/weather/api . However, Google provided a 4-day weather forecast, while yahoo just provides a forecast of about 2 days (there might be some other way to get more day forecasts from yahoo indirectly).

+3
source share

I think the end of the google weather api has come and Google has stopped the service. After all, this is not even an officially supported api.

iGoogle does not use api either. The best option would probably be to look for another free weather api.

I am sure we will hear more about this change in the next few days.

+1
source share

All Articles