电脑技术学习

联通WAP开发要记

dn001

开发人员基础:熟悉XML、HTML,相关动态语言(ASP、JSP、PHP……),我是用的JAVA。

再其它就一点一点慢慢扯了,一时的折腾根本就整理不过来……

一、图铃下载的IP权限问题。
源于WAP1.2的手机在下载文件时要通过联通的网关,而该网关会判断你的服务器IP是否合法――通过联通总部审核!是北京总部的!!
IP与域名不能互换,如你申请时提交的是IP,那下载地址中就也要用IP,我一开始认为无所谓的,就沿用了域名,结果就是返回“地址未授权的错误!

二、MIME的问题。
手机下载时遇到“信息类型不匹配时,根源就是这个MIME没配置好了。JSP的应用在那个web.xml里添加就是了。不过这个东西好像不是多多益善的:我把一个本来只有5K的文件,通过加那些MIME加到了50K,结果反而出现了不匹配的错误。删掉后又好了。

三、手机适配问题。
这个问题我到现在也还没完全做好,不过老板跟联通关系不错,那几款手机我也不去管了,TMD爱咋滴咋滴!本来指定一个格式就行了的,偏偏就这几款通不过。废话少说,我的方法是这样的:
一个UserAgent表是少不了的。我目前的表结构只包括了(手机型号、支持的铃音格式、WAP版本、属性文件地址<还没用到>),如果让我再做一个新的铃音下载系统的话,我会再加上手机内存大小这样的一个属性,不过现在就算了,改起来麻烦。WAP1.2的手机不支持大文件,我也就简单判断了一下不超过20K,其余不管。
因为系统是JAVA做的,所以只要用上JAVA的反射,在处理起这个时就不那么复杂了。例如一款支持amr格式的手机来访问时,那么UA表里的那个字段肯定就是amr了,这里我到铃音库的表里去找记录时就要加上amr不为空的条件就行。而显示出来时把歌曲类的amr对应的get方法得到,用反射来调用 getAmr()返回的字符串,就能很方便的得到amr对应的File对象了,再取得文件名、文件长度就简单了。

四、订制关系接口问题。
我这里有两套处理这个问题的代码,分别是java和asp的,都是网上down或朋友给的。也就是一个解析xml文档的程序,没什么难度。
jsp版  asp
(现在在网上要找个上传文件的地方真不好找。。。)另外wap1.2下载完的status的代码点这里

五、编码
我全部是用的UTF-8来写的页面,这样文件会大点,方便就行了。用POST传中文时,得到的是URL的编码,就decode一下。没有用GET方法来传递中文,解决方法是在生成GET的URL时,将中文编码掉,接收端再解码。这个方法感觉不错,我同事在写VXML时传递中文就是用的我这方法,信息是肯定丢不了的。

六、速度
WAP的速度绝对是不够快的,解决方法无疑就是添加缓存了。最起码要把UA缓存起来,然后定时清空一次。我的系统起了好多线程来做这个问题的,因为缓存的东东蛮多。

七、返回上一级
这个问题很让人头痛,最好的办法当然是写一个本堆栈来处理了,但细节上的东西也不是很好搞。还好我这个系统页面较少,再返回也就那么一回事,无非多加个代表from的参数吧。然后就是那么WAP1.2手机下载完要去的status页面了,我是用的Java里的 Hashmap 来存储之前的页面,再返回,唉。。

八、模拟器
我用的Opera和M3Gate作为模拟器,大名鼎鼎的winwap及其它几个开发商的模拟器我都没用。在联通这边,模拟器和真实机有一个很郁闷的问题是URL里的参数连接符,真机简单的用&,但模拟器里面却要求用&AMP;。
我的系统里有一个类,命名为:UserAgentAdapterUtil,反正所有跟UA挂钩的东西,都写在这边。有一个方法就是 public static String and(request) ,来做这个连接符的适配,麻烦。

九、URL的问题
在蓝色理想发过帖子请教过斑竹善于订制接口URL的问题了,后来再去联通那边时,发现原来是那个操作员的帐号没有绑定这个接口的权限,这个在他们的管理系统里在CP/SP通知管理“模块里。
那么再加上申报业务时填的什么入口URL、确认URL、计费URL,加起来就是要报给联通四个以上的URL了,确认URL和计费URL可以是多个地址的。按照联通那边人给我提的错误,是如此要求的,首页里面,除了业务介绍和免费体验以及返回××外,用户点击其它链接时,都应该弹出定制页面,所以确认URL 有很多,我最后一次提交这个东西时,放了大概七八个地址进去,就是有一些是为系统扩展预留的地址。计费URL的道理是一样的。