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.
android weather-api
herbertD
source share