初学sina sae中遇到的一些问题
最近很高兴获取到了sinasae的java邀请码,转发了不少次微博才获取到的。
既然有这个环境的话, 就不要浪费了, 打算部署个程序上去。
花了半天的时间弄好了一个天气预报的页面的,挺简单的,获取中国气象局网站的一个静态页面,直接通过iframe的形式引入,后来发现不行, 直接引入到页面上东西,从我的页面上不能获取到iframe里面的东西。这个方法就否决了,想到了用ajax去调用,发现也是一样的结果。跨域的问题真的是搞死人啊 。没有办法,还要去想别的办法, jQuery倒是有个跨域的方法,不过好像是只能返回json数据,对于html页面无能无能为力了。
还有个方法是通过引入js文件的动态加载特性,去动态加载那个页面,这个方法必须要动态的生成js文件,还是需要后端来控制,然后用js代码来加载html页面,不过还是存在不能获取iframe的数据问题。
跨域的话, 上网查了下有四个类别的方法,对比了一下,还是自己代理的方式最可靠,最好控制。
所以还是用servlet写了一个获取数据的方法,获取到的数据不能直接用,毕竟有些图片,js,等文件都是用的远程,还必须补上必须要的路径。
然后就是想到了一个功能,获取到了当前的天气,还是不够的,获取最近几天天气预报才行。然后,找了好久,发现天气api都做不怎么样。
最近发现新浪提供的api还不错。就用这个了
在获取了气象局的那个当前天气后,再添加方法获取新浪未来几天的 天气, 也一起打到页面上去了。 ok一起都准备好了。然后写了一个定时器,定时发送邮件到139邮箱,和其他邮箱,139邮箱能短信提示, 相当于发送短信通知了。
本地调试ok了,不论是从浏览器调用,还是定时器调用,发送邮件都没有问题,但是部署上去就杯具了,花了我两天的时间也没有找出问题出在哪。
问题:
1:在页面上提交servlet,显示出来的页面都没有问题,发送邮件也正常。但是定时器执行的东西,死活查询不到数据。
最开始怀疑发邮件有问题, 查了很久, 发现邮件能发送, 不是这个问题。
如果说Fetch URL的问题的话, 那从页面上触发调用后台,Fetch URL又完全没有问题。
定时器里面我写死的值,
编码不应该有问题。
是发送邮件就死活没有数据,
Fetch URL获取的都是空值。就和编码错了是一样的,打印日志跟踪编码,参数都没有问题,是正确的,哎,打印出来的url也是没有问题的。 我是找不到原因了。
回去做个jsp页面, 试下corn的方法, 看看能不能定时执行。
用cron的方法做定时器是可行的,很好用,已经测试成功了
cron:
- description: timercron
url: timer.jsp
schedule: every day of march 07:15
timezone: Beijing
配置很简单, 以后就用这个方法了