加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

一个Flex做的天气预报widget

发布时间:2020-12-15 03:45:22 所属栏目:百科 来源:网络整理
导读:弄了一个天气预报的widget,有些心得在里面,拿出来分享。 最终的效果: ? 使用的技术: Flex,asp.net,flash 关于天气数据: 本人是在气象局工作的,但对于气象局的公众服务其实相当不满,怎奈自己是个小兵,能做的只是积极献言献策,试图改变“上面”的思维

弄了一个天气预报的widget,有些心得在里面,拿出来分享。

最终的效果:

?

使用的技术:

Flex,asp.net,flash

关于天气数据:

本人是在气象局工作的,但对于气象局的公众服务其实相当不满,怎奈自己是个小兵,能做的只是积极献言献策,试图改变“上面”的思维。就拿数据服务来说,部门内部不论软硬件环境都很不错,至少把天气预报通过某种途径(WebService,mashup,rss等)提供借口是没有问题的。在做这个widget是才发现,根本没有直接的接口可寻,翻了翻一些大站的天气服务,总算找到一个提供Json数据的(也许人家根本不是主动提供的),就不透露是那个站了。

?

一些技术细节:

跨域访问数据问题

既然天气数据来自某网站,自然存在跨域问题,服务器不在你手上,自然就不是crossdomain.xml能解决的了。这个问题参考了noahgenius 关于使用asp.net作数据代理的文章,简单说就是使用自己的服务器将数据获取到,然后提供给客户端。

?

Flash的中文编码问题

这个问题有两部分,一个是单纯的中文显示问题,这个有好些方法,在initialize方法中添加“"flash.system.System.useCodePage=true”较为简单。另一个是flash生成连接url的中文编码问题,可以在要传递的中文参数(城市名称)上使用encodeURI方法就可以了。当然.net中也会涉及这个问题。

?

Flex处理Json数据的问题

Json这么新潮的数据格式,Adobe不会不考虑,提供了专门的类文件(我会防到附件里)来处理,com.adobe.serialization.json这是他的名称空间。使用方法参考岩屋的文章《Flex用JSON处理返回的数据》。

.net的WebClient缓存问题

如果每次客户端访问,服务器代理都会访问天气数据网站并下载数据,那绝对是可悲的。气象预报工作我是有一定了解的,中国的天气预报一般在北京时间8时会发布一次,包括24小时预报、48小时预报、72小时预报,下午4时会视上个预报周期后这12小时的情况,发布一次更正预报。我说上面的意思是说,其实天气预报信息一天24小时之内只会发布两次,那么最佳解决方案当然是缓存天气预报数据。我们现在是基于.net实现的,就说说.net的WebClient的缓存处理,这个你可以参考官方文档关于WebClient.CachePolicy 属性的描述。其实就是把WebClient的缓存策略(RequestCachePolicy )设置成Revalidate。

MSDN 写道
Revalidate 如果时间戳与服务器上的资源的时间戳相同,则使用资源的缓存副本满足请求;否则从服务器下载资源,将资源展示给调用方然后存储在缓存中。

?

这样服务器还是会到目标服务器上看看的,但只是去查看该文档的最后修改时间,如果没有更新,就不会获取整个数据实体。如果用Jakarta Commons

的HTTPClient的话,也是一样的道理。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读