Android编程实现获取新浪天气预报数据的方法
本文实例讲述了Android编程实现获取新浪天气预报数据的方法。分享给大家供大家参考,具体如下:
新浪天气预报地址:
http://php.weather.sina.com.cn/xml.php?city=武汉&password=DJOYnieT8234jlsK&day=0
其中,city后的城市可用java.net.URLEncoder.encode(“武汉”,”gb2312”);也可以直接写”武汉”,但不能用”wuhan”。Password固定
Day为0表示当天天气,1表示第二天的天气,2表示第三天的天气,以此类推,最大为4。
工具类:
1、定义成员
/**新浪天气网址*/ publicfinalStringSINA_URL="http://php.weather.sina.com.cn/xml.php"; /**新浪天气XML调用密码*/ publicfinalStringPASSWORD="DJOYnieT8234jlsK"; /**城市*/ publicStringcity; /**白天天气*/ publicStringstatus1; /**夜晚天气*/ publicStringstatus2; /**白天天气拼音*/ publicStringfigure1; /**夜晚天气拼音*/ publicStringfigure2; /**白天风向*/ publicStringdirection1; /**夜晚风向*/ publicStringdirection2; /**白天风级*/ publicStringpower1; /**夜晚风级*/ publicStringpower2; /**白天温度*/ publicStringtemperature1; /**夜晚温度*/ publicStringtemperature2; /**体感温度*/ publicStringtgd; /**紫外线指数*/ publicStringzwx_l; /**紫外线说明*/ publicStringzwx_s; /**体感度指数*/ publicStringssd_l; /**体感度说明*/ publicStringssd_s; /**空调指数*/ publicStringktk_l; /**空调说明*/ publicStringktk_s; /**洗车指数*/ publicStringxcz_l; /**洗车说明*/ publicStringxcz_s; /**穿衣指数*/ publicStringchy_l; /**穿衣说明*/ publicStringchy_shuoming; /**污染物扩散条件*/ publicStringpollution_l; /**污染物扩散条件说明*/ publicStringpollution_s; /**感冒指数*/ publicStringgm_l; /**感冒说明*/ publicStringgm_s; /**运动指数*/ publicStringyd_l; /**运动说明*/ publicStringyd_s;
2、获取天气数据
/**
*更新天气
*
*@paramcity
*城市名
*@paramday
*0表示当天天气,1表示第二天的天气,2表示第三天的天气,以此类推,最大为4
*/
publicvoidUpdateWeatherInfo(Stringcity,Stringday){
if(city.equals("")){
isLoaded=false;
return;
}
Stringhtml=null;
try{
html=doGet(SINA_URL+"?city="
+java.net.URLEncoder.encode(city,"gb2312")+"&password="
+PASSWORD+"&day="+day);
Documentdoc=Jsoup.parse(html);
if(doc.body().getElementsByTag("Profiles").size()==0){
isLoaded=false;
return;
}
if(doc.body().getElementsByTag("Profiles").get(0).getElementsByTag("Weather").size()==0){
isLoaded=false;
return;
}
Elementelement=doc.body().getElementsByTag("Profiles").get(0)
.getElementsByTag("Weather").get(0);
this.city=element.getElementsByTag("city").text();
status1=element.getElementsByTag("status1").text();
status2=element.getElementsByTag("status2").text();
figure1=element.getElementsByTag("figure1").text();
figure2=element.getElementsByTag("figure2").text();
direction1=element.getElementsByTag("direction1").text();
direction2=element.getElementsByTag("direction2").text();
power1=element.getElementsByTag("power1").text();
power2=element.getElementsByTag("power2").text();
temperature1=element.getElementsByTag("temperature1").text();
temperature2=element.getElementsByTag("temperature2").text();
tgd=element.getElementsByTag("tgd").text();
zwx_l=element.getElementsByTag("zwx_l").text();
zwx_s=element.getElementsByTag("zwx_s").text();
ssd_l=element.getElementsByTag("ssd_l").text();
ssd_s=element.getElementsByTag("ssd_s").text();
ktk_l=element.getElementsByTag("ktk_l").text();
ktk_s=element.getElementsByTag("ktk_s").text();
xcz_l=element.getElementsByTag("xcz_l").text();
xcz_s=element.getElementsByTag("xcz_s").text();
chy_l=element.getElementsByTag("chy_l").text();
chy_shuoming=element.getElementsByTag("chy_shuoming").text();
pollution_l=element.getElementsByTag("pollution_l").text();
pollution_s=element.getElementsByTag("pollution_s").text();
gm_l=element.getElementsByTag("gm_l").text();
gm_s=element.getElementsByTag("gm_s").text();
yd_l=element.getElementsByTag("yd_l").text();
yd_s=element.getElementsByTag("yd_s").text();
isLoaded=true;
}catch(UnsupportedEncodingExceptione){
isLoaded=false;
}
}
3、访问网络
publicstaticfinalStringENCODE="utf-8";
publicstaticStringdoGet(Stringurl){
try{
HttpGethttpGet=newHttpGet(url);
HttpClienthc=newDefaultHttpClient();
HttpResponseht=hc.execute(httpGet);
if(ht.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
HttpEntityhe=ht.getEntity();
InputStreamis=he.getContent();
BufferedReaderbr=newBufferedReader(
newInputStreamReader(is));
Stringresponse="";
StringreadLine=null;
while((readLine=br.readLine())!=null){
response=response+readLine;
}
is.close();
br.close();
returnresponse;
}else{
return"error";
}
}catch(Exceptione){
return"error";
}
}
4、关于jsoup可参考:
http://baike.baidu.com/view/4066913.htm
希望本文所述对大家Android程序设计有所帮助。