WM利用Google Weather API获取天气预报

本文介绍了如何在.NET Compact Framework环境下利用HttpWebRequest发起HTTP请求,获取并解析Google Weather API的XML数据,展示天气预报信息,包括温度、天气图标等,并详细讲解了处理XML数据和获取远程图片的技巧。
摘要由CSDN通过智能技术生成

最近,项目忙得很,公司里杂事很多都跑到我这里,搞得我也不能专心的做项目,索性,今天抽空,玩了一玩谷歌的天气预报服务。相信通过这篇文章,能让大家了解在.net CF下如何发起一个http访问请求(WebRequest),以及处理请求到的数据,比如xml数据、图片数据等。当然,在此分享也是娱乐一把,边走边说吧!

  开始,我们需要了解一下,谷歌的这个服务API,通过也即你在浏览器输入http://www.google.com/ig/api?weather=Kunming,看看什么效果,哈哈,一个xml结构的数据显示在网页中,这就是今天的主角儿!其实,WM通常获取这类数据是通过Webservice,但是也有些信息是通过之前那种http方式提供的,所以,如果我们的WM程序要完成天气预报的获取,至少要完成如下几个步骤:

  • 发起一个http请求:HttpWebRequest
  • 处理这个请求返回的数据:HttpWebResponse
  • 把这些数据组织成可读性强的形式:UI

很幸运,.net CF提供了关于http请求和处理的相关类,当然,它对xml文档操作的支持也是非常的人性化了,在开动Coding之前,先来普及一下某些知识:

————http请求,看图!

并且,附上一篇好文:HTTP请求流程(一)----流程简介,希望大家能够耐心的去了解,毕竟待会儿的代码中就会涉及某些知识,哈哈。

好了,开始惊心动魄的Coding吧,嘿嘿!

 

首先,用vs2008建立一个以c#语言为基础的智能设备应用程序,模拟器用5.0 ppc即可,.net cf版本么,2.0吧~~~~~

然后我们来设计如下的一个用户界面:

几个lable,用来存放天气数据,一个pictureBox用来存放天气图标。两个按钮,一个用来开启主要功能,另一个退出,简单吧!哈哈。到此界面完成了。我们来看看具体的业务代码,双击获取信息按钮,加入如下代码:

 

 

 

 

代码很好理解,也看到.net cf对xml数据的操作还是比较方便的,我们读取了选定的节点数据,赋值给lable控件,应该是一目了然了吧。我就不再赘述,下面要说说两个地方,第一,那个GoogleWeatherAPI_Parser方法;第二,GetPicImage方法。

首先,GoogleWeatherAPI_Parser方法主要是进行一个HttpWebRequest的发起,并且相应这个请求的回应,接受xml数据,具体代码如下:

 

   
   

 

哈,很简单吧,就是发起一个Http请求,把一些请求信息加入到Header中,比如地域性息、浏览器版本等……经过测试,如果你的地域是美国,那么返回的信息是英文的,当然,其他国家暂时没有测试哦……

下面,来看看GetPicImage方法,因为谷歌返回的那个xml数据中,天气图片是一个远程的url地址,对于PictureBox来说,不可能直接使用的,但是,经查,只要把这个图片地址进行HttpWebRequest一下,然后接受返回的Stream,再把此Stream通过Image的FromStream方法进行接收,就可以了。

实际上,.net CF下的Image类,只有FromHbitmap方法,看看此方法接受的参数,就知道杯具了,看来不能直接使用那个请求后返回的Stream,要做一个转换,如何转换呢,请看代码:

 

现在是不是明白很多了呢,我们先通过一个Bitmap对象,接受这个ResponseStream的内容,然后,再利用Bitmap的GetHbitmap方法,就得到了一个Hbitmap对象,刚好可以用来“填充”一个Image对象,而填充后的Image对象,就可以被PictureBox所使用。也许,这也是这篇文章中相对难度较大的地方,在此和大家分享一下。

Ok,说了这么多,系统主要功能模块代码和思路都有了,接下来要看看运行效果如何,如下图:

 

恩,风和日丽,湿度刚好!不愧是昆明啊~呵呵,好了,今天的文章就到此为止。谢谢!

参考文章:

Google Weather API调用说明

.NET Compact Framework下HttpWebRequest开发 

Windows mobile Emulator(模拟器)通过ActiveSync连接上网!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值