以下代码之前运作良好:
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;
}
但现在它返回String:Unsupported API。
请帮帮我。谷歌api关闭了吗? PS。我在中国。
答案 0 :(得分:3)
是的,谷歌似乎停止了无证的天气api服务。
XML Parsing Error: syntax error
Location: http://www.google.com/ig/api?weather=delhi
Line Number 1, Column 1:Unsupported API
^
您可以尝试yahoo weather
或http://www.wunderground.com/weather/api
。
然而,谷歌提供了大约4天的天气预报,而雅虎提供了大约2天的预测(可能有一些其他方式来间接从雅虎获得更多天的预测)。
答案 1 :(得分:1)
我认为谷歌天气api的结束已经到来,谷歌已停止服务。毕竟,它甚至不是任何官方支持的api。
iGoogle似乎也不再使用api了。 你最好的选择可能是寻找一个不同的自由天气api。
我相信我们会在接下来的几天内听到更多这种变化。