에서 다음 코드 작업을 날씨를 가져올 수 없습니다 :안드로이드는, 전에 잘 구글 API를
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;
}
하지만 지금은 문자열 반환 : 지원되지 않는 API를.
도와주세요. Google API가 닫혔습니까? PS. 나는 중국에있다.