android天气预报

      在android上显示天气预报,通过解析一些天气网站的xml文档。

      比如网址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=北京

打开:


解析之后可以得到里面的内容。显示了解了一下解析xml的几种方式:dom,sax,pull,也没看懂。可喜的是网上有教程视频,搜“android每天写一个app第05天天气预报”,讲的很清晰。参考之后,就很轻松了。下面是主要代码及注释:

    因为与网络建立连接,比较耗时,所以放在线程里。

		new Thread(){
				public void run(){
					try {	
						URL url=new URL(path);
						HttpURLConnection conn=(HttpURLConnection) url.openConnection();
						conn.setRequestMethod("GET");
                                                //等待加载10秒
						conn.setConnectTimeout(10000);
						int code=conn.getResponseCode();
						//状态码是200,说明正常响应请求数据
						if(code==200){
							InputStream is=conn.getInputStream();
							//创建xml解析器
							XmlPullParser parser=Xml.newPullParser();
							//根据指定的编码来解析xml文档
							parser.setInput(is,"UTF-8");
							//得到当前事件类型
							int type=parser.getEventType();
							List<String> list=new ArrayList<String>();
							//计息到文档结束
							while(type!=XmlPullParser.END_DOCUMENT){
								if(type==XmlPullParser.START_TAG){
									//当是<string></string>括起来的都存进arraylist
									if("string".equals(parser.getName())){
										String str=parser.nextText();
										list.add(str);
									}
								}
								type=parser.next();
							}	
							//通过,handler传出数据
							Message m=Message.obtain();
							m.what=SUCCESS;
							m.obj=list;
							handler.sendMessage(m);
						}else{
							Message m=Message.obtain();
							m.what=Error;
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}.start();

猜你喜欢

转载自dongxiaojie22232.iteye.com/blog/2205196