下面我介绍比较简单的两种方式来完成在Android中调用天气预报。
1.
Weather weather = new Weather();
String urlStr = "http://flash.weather.com.cn/wmaps/xml/"+cityId+".xml";
try {
url = new URL(urlStr);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream is = urlConnection.getInputStream();
parser = Xml.newPullParser();
parser.setInput(is,"UTF-8");
while(parser.getEventType()!=XmlPullParser.END_DOCUMENT){
if(parser.getEventType() == XmlPullParser.START_TAG){
String name = parser.getName();
if("city".equals(name)){
String cn = parser.getAttributeValue(2);
if(cn.contains(cityName)){
String weatherStr = parser.getAttributeValue(8);
weather.setWeather(weatherStr);
}
}
}
parser.next();
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
2.
Weather[] weather = new Weather[4];//定义取三天的天气
//http://m.weather.com.cn/data/101070101.html
//String URL = "http://m.weather.com.cn/data/"+CityId+".html";
//http://m.weather.com.cn/atad/101070101.html
String URL="http://m.weather.com.cn/atad/"+cityId+".html";
String Weather_Result="";
HttpGet httpRequest = new HttpGet(URL);
try {
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
Weather_Result = EntityUtils.toString(httpResponse.getEntity());
}
} catch (Exception e) {
return weather;
}
if(null!=Weather_Result&&!"".equals(Weather_Result)){
try {
JSONObject JO = new JSONObject(Weather_Result).getJSONObject("weatherinfo");
for (int i = 0; i < weather.length; i++) {
weather[i] = new Weather();
weather[i].setCityName(JO.getString("city"));
weather[i].setCurrentDate("date_y");
weather[i].setWeek(JO.getString("week"));
weather[i].setTemp(JO.getString("temp"+(i+1)));
weather[i].setWind(JO.getString("wind"+(i+1)));
weather[i].setWeather(JO.getString("weather"+(i+1)));
}
} catch (JSONException e) {
weather = new Weather[4];
return weather;
}
}
<p>版权声明:本文为博主原创文章,未经博主允许不得转载。</p>