目录
一、关于WAP的常见问答
二、关于WML的常见问答
三、关于WAP开发的常见问答
四、关于WMLScript的常见问答
五、关于WBMP的常见问答
六、关于WAP网关的常见问答
七、关于WAP浏览器的常见问答
八、关于WAP手机的常见问答
九、关于WAP安全的常见问答
十、关于WAP其他方面问答
十一、关于WAP站点建设的常见问答
一、关于WAP的常见问答
1. 简单的说WAP代表什么?
WAP代表“Wireless Application Protocol”。WAP标准也就是无线应用协议(Wireless Application Protocol )。它的作用就是使移动电话和其他无线设备能够访问各种服务和信息,特别是Internet上的服务与信息。
2. 什么是WAP ?
WAP是Wireless Application Protocol的首字母缩写。其定义来自于无线工业界,例如Nokia和Ericsson。它基于现有的Internet技术,例如XML和IP,主要是为无线用户( WAP设备,例如移动电话)提供Internet上的应用和服务。
WAP不是简单的一个协议,它由许多协议组成的,涵盖了从WAP设备到用户代理以及传输协议与GSM信道的各个方面。许多站点都有关于WAP的信息,具有权威的资料一般来自于WAP Forum。但是从WAP Forum来的信息非常专业,技术性强,因此对于新手来说是很困难的。虽然WAP目前还处在刚刚诞生的婴儿阶段,看起来的确有很多不尽人意的地方,但是随着无线通讯工具的普及、网络技术日益成熟、生产商和网络服务商的不断进步,WAP一定会实现现在人们使用IE等浏览器上网冲浪一样的快捷、愉悦,并且更能享受随时随地想上就上的轻松自在。
3. 谁发展了WAP ?
WAP是由一个名叫“WAP论坛”的公开组织发展的。这个讨论组的主要职责是制定WAP的标准和规范。该讨论组的网址为:www.wapforum.com。
4. WAP论坛有哪些公司加盟?
几乎所有的大型通讯公司、无线网络设备提供商,手持设备制造商和软件开发商等等都是WAP讨论组的成员。
5. 为什么要投资WAP ?
WAP允许持有支持该协议的移动设备访问信息和事务服务,例如:饭店和旅馆信息、证券交易、银行服务、目录服务、外汇牌价、航班时刻表、火车和汽车时刻表等等。基于WAP的设备是全球化的,易于使用,并且具有很高的安全级别。它兼容现有的应用程序和IT系统。
预测到2003年,将通过移动电话连接到Internet网络的人将超过使用PC机连接的人。策略分析学家认为,将有超过5.25亿部WAP手机投放市场。
通过交叉的合作,WAP提供了许多潜在的重要商机。它将开辟新的服务方式和新的服务渠道。拥有WAP合作伙伴的公司将能够为他们的客户随时随地提供服务。
WAP将允许合作伙伴使用现有的所有协议或载体为用户服务。最重要的就是通过一个统一的途径来访问全球的用户。
面对这样广阔的前景,当然有理由投资WAP了。
6. 什么服务可以利用移动的优点?
移动服务当然比经典的Web服务更适合于移动的Internet。这些应用正在合并,正像冰山一点点地融化。
以下的应用是其中的一个例子,这个应用将从移动网络受益非浅(被称作“应用杀手”)。
定位服务(Location Based Services)
总的来说定位服务为用户提供全球定位服务,并且还能提供和位置相关的各种信息。在不久的将来,移动设备将能够告诉Web服务器特定的用户在哪儿。当然也可以采取直接向用户询问他们的位置,然而用户的回答描述往往是不准确的。
一个简单的例子就是显示一个城市的公共交通。假设某人想到某个站下车去参加一个会议。因为公共汽车可能会误点,他需要知道公共汽车上次离停的时间,或者知道它到底晚点多少。
在公共汽车站点一般都有一个时间表,还有一个唯一的标识。他可以访问公共交通的Web站点,输入必要的信息后,Web服务器就可以告诉他到底在什么地方,并且可以显示最近的公共汽车站点。虽然现在的公共汽车、火车等交通工具还没有GPS,但是相信总有办法得到位置的精确信息。总的来说,系统可以不用等到新技术的出现就能得到相关的服务。
当技术成熟到可以自动得到用户地理位置的时候,一个好的基于位置的服务将可以提供一个城市停车服务。例如不需要停车灭表,用户拥有一个设备和唯一的号码。当他想停车的时候,只要简单地告诉系统他想停在什么地方、停多久。当离停车结束只有5分钟的时候,系统将使用SMS系统告诉他的停车时间快到了,他必须开车离开或者再付钱。同时,这个系统还可以自动地通知用户哪里有停车位置,哪里发生了交通堵塞并提出智能化的建议。
7. 在中国能得到WAP手机吗?
能。现在有很多厂家都生产WAP手机并且在中国销售。例如:Ericsson,Mitsubishi,Neopoint,Samsung,Ericsson。
8. WAP可以在GPRS上运行吗?
可以。GPRS是一种新的无线服务方式。它将使WAP的传输比在现在的SMS或者CSD要快。
9. 在GSM中WAP使用什么信道?
在GSM中,WAP可以使用Short Message Service(SMS)信道或者Circuit Switched Data (CSD)信道,后者的带宽比较大。
10. WAP可以在什么样类型的网络上运行?
WAP是为了可以在多种网络环境中运行而设计的。包括:GSM、PDC、CDPD、CDMA、TDMA、PHS和DECT,还包括将来的3G。
11. WAP设备是如何连接到Internet上的?
一个普通的WAP应用的场景如图10-1所示:
图 10-1 普通的WAP应用
在上图中,从左边开始,移动网络(GSM、CDDA等)中的移动WAP设备,通过拨号连接到接入服务器(RAS,或者远程控制服务器)的Modem上。这个服务器使得WAP设备可以使用协议来工作。有一些如同Internet Service Provider将提供给用户底层协议,被称作为PPP(Point-to-Point)协议。这个协议是用在整个WAP链中的下一个环节设备——由移动营运商提供的WAP网关。网关连接无线和“Web”世界,基本上是使得WAP设备能够操作普通的Internet。
更详细地说,当用户在WAP设备上输入URL的时候,例如 http://wap.colorline.no/ WAP设备首先检查用户的连接设备是否已经打开。如果没有就拨号到如上面所描述的PPP提供者。在PPP提供者已经给WAP所需要的协议和指定的IP地址之后,请求的URL将发送给网关(WAP网关)。在WAP设备请求的URL的“控制”下,发出一个普通的HTTP请求(例如:GET http://wap.colorline.no)给Internet 。在Internet 那边有一个普通的Web服务器,里面装有WAP和Web的内容,现在接收到了从WAP网关过来的HTTP请求。这个Web服务器通过判断浏览器的类型(WAP或者Web)来发送相应的内容给浏览器。接着请求的内容发送到WAP设备。因为一个WAP设备的WML浏览器只能读懂二进制的WML,所以如果这些请求的内容是文本的WML编码,WAP网关就进行编译工作,将WML编译成二进制的WML,也就是设备可以读懂的WMLC(一些经过压缩的二进制代码),并把这些二进制代码发送到WAP设备;如果内容已经是二进制的WML格式,WAP网关将跳过这个操作。这就是为什么转换文本WML到二进制WML减小了带宽的缘故。最后,当WAP设备的WML浏览器接收到二进制的WML代码,浏览器就显示其内容在WAP设备上供用户使用。
这是一种WAP设备连接到Internet的主要方式。
当WAP设备使用的是公共的WAP网关,而不是移动营运商提供的网关的时候,只需要简单地将WAP网关移动到Internet上。需要说明的是这不是普通的WAP设备的配置。在放置的时候,可能要遇到一些问题,图10-2说明了这个方式:
图10-2 使用公共网关
这个时候WAP设备请求了另外的一个在Internet上的WAP网关。这个图没有什么特别的地方需要说明。只是当那些没有移动营运商提供WAP服务的地方,或者是想自己建立WAP服务的地方,可以使用这样的方法。
如果内容提供者想完全控制在Web Server和WAP设备之间的数据流发送和接收。那么就应该安装一个所谓的WAP server。这个设备其实是一个Web Server和WAP 网关的混合体。并且经常是在一个防火墙的后面。
图10-3说明了这个问题。防火墙是可选的,但是强力推荐。
图 10-3 加入防火墙
WAP设备就像前面所说的那样进入Internet,但是现在连接到防火墙的时候,它将接受或者拒绝一些连接,然后将连接发送给WAP 服务器内的WAP网关。在这个图中,在内容服务器和WAP设备之间是使用点对点的WTLS加密协议。
WAP服务器对于一个普通的站点来说是不必要的。
12. 能从服务器推送消息到WAP设备吗?
WAP1.1不允许推送。可以用SMS来达到这个目的。
13. WAP如何同Bluetooth, EPOC和Windows CE竞争?
这有点不大可能。WAP是使得Web的内容迁移到移动设备上。EPOC和Windows CE是设备的操作系统,它将使得微型浏览器可以浏览WML页面。Bluetooth 是一个RF (Radio Frequency)技术,它是一种小范围的无线网络。
14. WAP能持续多久?
笔者个人的观点来看,WAP能持续多久,最终还是要取决于用户对WAP的信心。一个好的技术往往在市场选择了其他的方式之后就被浪费掉了。例如VHS,Beta和Video 2000家庭视频标准。从技术的角度上来讲Video 2000提供最好的质量,但是市场选择了VHS,而且是三个里面最差的那个。对于WAP的前景问题,很不幸的是WAP现在被标上了“移动电话上的Internet”这样一个条框限制。相信多数的WAP设备是移动电话,但是WAP并没有电话这个限制,说WAP是一个Web浏览器是错误的。
WAP是可以在一个“瘦”客户端上提供类似于Internet上的服务和应用。所谓“瘦”就是低能力的处理器,非常有限的显示屏幕等等。这些应用如何能更好的工作,完全取决于开发人员。WAP现在的确是限制了开发人员,但它是一个新技术,毕竟在发展的过程中有很多障碍。
有很多人当他们见到手持的微型PC和PDA的时候说,因为小的显示屏幕和缺乏好的输入机制WAP就要死亡。笔者个人认为这是错误的,首先是设备的问题,当人们外出时需要尽可能的少带设备;其次是花费问题,两个设备肯定比一个设备花费多,并且主要的WAP设备普通人都能够承受,而且花费也少。
制造厂商可能想通过将PC和移动电话集成在一起来解决这个问题。那么设备的尺寸又是另外一个问题。对于这样一个能够让人们使用的设备,肯定有很多限制。首先是输入设备,当前最好得输入设备就是键盘。若给移动电话配一个合适的键盘,那么这样一个键盘的每个按键之间的间隔可能只有小孩子才可以使用。其次是输出界面,一个人的眼睛最适合于观看五英寸的屏幕,任何比这再小的屏幕,用户都不得不再移近观看,这么大的一个屏幕将使得设备显得特别庞大并且无法放在一个普通的口袋里,而典型的移动电话的显示屏幕是2英寸,如果用户想显示普通的640*480图像在这个屏幕上,那将是不太现实的。
一个典型的混合PDA和移动电话的设备有点像今天的Nokia Communicator。用户无法方便地使用这个设备,除非用一只手来抓住它另一只手来操作或者让它完全固定住。而一个普通的移动电话,用户只需用一只手就可以操作,包括抓住和输入。
有人可能要说在一个电话上使用数字键盘来输入是不可能。使用普通的键盘的确是很方便,但是这并不意味着你在WAP设备上书写不方便。现在成亿的SMS都是从移动电话上发出的,就证明了这一点。
最后要说的是WAP不是在移动电话上的Web。WAP将拥有很长的生命期,只要有开发者能够理解它并且应用它。
15. 有哪些成功的WAP应用?
表10-1给出了很好的WAP应用的实例。也许不是非常有用或者非常高科技,但是它们是很好的例子:WAP可以提供Web的功能应用。
这些应用是基于WML的,在普通的HTML下将无法得到预期的效果。
表10-1 WAP应用
应用 类型 地址
翻译 翻译成英文 http://www.zenith.ie/wap/translate
WAP CAM 在线的WAP相机 http://wap.colorline.no/demos.html(从菜单选择WAP CAM)
域名检测 检测.com .net和.nl域名的有效性 http://kronkel.com/domain.wml
登记本演示 登记本演示 http://cgi.cse.unsw.edu.au/cgi-bin/cgiwrap/s2231995/GB/GuestBook.wml
波兰机场信息 波兰机场信息(波兰语) http://www.polish-airports.com/wap/main.wml
SETI@Home级别列表 显示SETI@Home级别列表Kuba Urbaniak http://seti.matrix.pl/setiatwap/
域名检测和注册 检测和注册.com .net.org域名 http://wap.tldnames.com/
PDFmail 安全的WAP e-mail有很多功能 http://www.sanface.com/wap/pdfmail.wml
有一些URL地址非常长,可以从下面的地址来选择:http://wap.colorline.no/links.wml。
16. 可以推荐一些好的WAP服务商吗?
下面有两个列表。表10-2提供免费的WAP主机服务,他们的服务相差很大,但是都是免费的。表10-3列出的是商业的WAP服务商,需要支付服务费。
表10-2 免费的WAP服务商
提供商 服务类型 地点
Tag Tag 免费的WAP站点主机和在线的基于Java的WAP站点编辑器 美国
http://www.tagtag.com/
wapHQ 免费和独立的移动Internet操作 英国
http://www.waphq.co.uk/
WAP Service 免费的WAP公共服务 瑞典
http://www.wapservice.com/
Wappy 免费的WAP站点和重导向服务 荷兰
http://www.wappy.to/
SoWAP 免费的WAP主机(法文) 法国
http://www.sowap.com/
Freedom2Surf 真正免费的HTML服务,但是他们支持PHP3来提供WAP内容服务 英格兰
http://www.freedom2surf.net/
Anytimenow.com 免费的20M空间,在线编辑和存储wml和wmls文件。同样提供WAP email服务,包括Hotmail 英格兰
http://www.anytimenow.com/
Hoiley.com 免费的离线WAP builder - WMLedit (仍在"beta"版本) 德国
http://www.hoiley.com/
Waphome.ch 免费提供商,在德国,包括在线的基于WAP的转换服务 瑞士
http://www.waphome.ch/
WapSpy 免费提供商,文件上传,图像库
http://www.wapspy.com/
WapMine Windows离线编辑器,WAPpage 美国
http://www.wapmine.com/
WapDrive 免费提供商"beta" version
http://www.wapdrive.net
WAP Homes 免费提供商(在德国) 德国
http://www.wap-homes.de/
AddCom 免费提供商(在德国) 德国
http://www.addcom.de/
WapMatic 免费提供商(在英国和德国) 德国
http://www.wapmatic.de/
DeZines Webhosting 几乎免费提供WAP环境,包括PHP 国际
http://www.web-hosting.com/
Done 免费提供商(在土尔其和英国)。包括字典,游戏等 土尔其
http://www.donetr.com/index.html
Start.no 很好的免费WAP站点。还有很多服务。在挪威 挪威
http://wap.start.no/
表10-3 商业的WAP服务商
提供商 服务类型 地点
wapHQ WAP,应用主机,合作应用 英国
http://www.waphq.co.uk/
Brainstorm Wireless Application Service 提供和开发商 英国伦敦
http://www.brainstorm.co.uk/
IntegrationWireless 创建移动商务 美国华盛顿
http://www.integrationwireless.com/
17. 以前没有WAP的经验,但是想学,如何动手?
建议在站点wap.com查看一下《Beginner''s Guide to WAP/WML》。
另外可以从ASP Today(http://www.asptoday.com)中发现一些如何书写WMLScript的文章。许多人都会发现在阅读了一些文档之后能很容易的上手。笔者也建议你在阅读了一些文章之后再开始做。
哪儿有一个WAP词汇表?
这里有一个词汇表(表10-4)
表10-4 词汇表
WAP Server 一个经常错用的词汇。一个WAP Server从真正的意义上来说和一个HTTP Server没有太多不同。Nokia将他们的HTTP Server和WAP Gateway集成产品也叫做WAP Server。其实是一个内容提供服务器和网关。网关完成网关的内容,内容提供服务器完成内容提供服务器的功能
WAP Gateway WAP Gateway是一个两种模式的设备(像许多网关一样)。从WAP设备这边来看,WAP设备只懂得二进制格式的WML,WAP网关的功能就是转换内容为这种格式。从HTTP服务器这边来看,WAP网关可以通过HTTP头提供附加的有关WAP设备的信息,例如WAP设备的电话号码,电话ID甚至是位置信息
WML Card 一个在WML Deck中包含导航、用户交互的完整的WML块。一个或者多个WML卡片必须包含在WML Deck中。WML Deck就是XML文档。(Deck就是扑克牌盒,Card就是每张牌)
WML Deck 一套WML卡片。整个Deck在请求的时候都将装入到浏览器中,然后针对其中的每个卡片进行处理
SGML Standardized Generalized Markup Language
UA User Agent.能够解释WMLWML,WMLScript,WTAI或者其他格式的代码的软件
WMLScript Scripting language for WAP devices。基于JavaScript,但是功能比较弱
XML Extensible Markup Language。W3C的Internet Markup Languages标准. WML是这些语言中的一种。XML是SGML的子集
HDML Handheld Markup Language
W3C World Wide Web Consortium。http://www.w3c.org
WAE Wireless Application Environment
WSP Wireless Session Protocol
PDA Personal Digital Assistant。通常是一个手持的设备,例如 Palm Pilot。WAP不是仅仅为蜂窝电话设计的,PDA也可以支持
Element 一个元素指的是在WML Deck中的标记和结构信息
DTD Document Type Definition
WTP Wireless Transaction Protocol
WTLS Wireless Transport Layer Security。一个“等价于”SSL (Secure Sockets Layer)的协议
WDP Wireless Datagram Protocol
19. 除了这个FAQ,我在哪儿能找到更多关于WAP和WML的信息?
可以在本书的第8章WAP资源中找到很多相关的资源。
20. WAP 1.1和WAP 1.2有什么不同?
现在主要的设备和应用或多或少的遵循WAP 1.1协议。WAP Forum 已经发布了WAP 1.2 ,里面没有太多值得注意的不同。毕竟一个协议不能进化得太快。
总的来说,WAP 1.2中有以下几个最重要的新特点。对每个特点最好参考 WAP 1.2 Specifications。
l 新协议
UAPROF(User Agent Profile)。它基本上同意用户代理(可以近似理解为浏览器)使用一种方式来告诉内容提供者它有什么样的功能。这样使得提供者可以格式化输出最好的功能到这个专门的用户代理。
PUSH. PUSHing简单的说就是让应用服务器可以发送数据直接给用户代理。
l WML
accesskey属性加入到<a>、<anchor>和<input>标签中。accesskey属性将允许用户只需要按一个专门的按键转跳到一个专门的锚或者输入框中。
<pre>标签看起来还没有在发布的版本中公布。我们将假设它和HTML中的pre标签具有同样的意义。
enctype属性加入到<go>。使用这个可以知道发送的数据将进行加密处理,要么是application/x-www-urlencoded或者multipart/form-data。对于GET,只引用前者。
align属性增加到<table>。指定对齐内容使用L、R、C和D分别对左,右,中和默认。
<input>的格式化属性Nf已经从绝对数值变化到可以从0到n。
字符编码不在依靠指定的专门的<meta>标签。
l WMLScript标准库
URL库已经确认为RFC2396。
在字符串中如何表示非US-ASCII字符。非US-ASCII字符必须转换成本地可用的字符集。
21. 在WAP中如何实现多媒体流?
在一家叫做Sontora (http://www.sontora.com)的公司发布一些有关Mobicast的信息之前,这被认为是不可能的。Sontora的一些有关Mobicast的信息将可以在任何WML 1.1的设备上使用声音流,包括MP3、Windows Media和RealAudio,并且不需要对设备进行任何的修改。要想得到更多的信息,可以浏览他们的站点。
以前说不能是因为WAP协议不允许操作硬件。更谈不上播放音乐了。即使是Web的协议也不可能。对于Web环境是使用插件来解决的。但是对于WAP环境没有插件。
其实,可以使用WAP来点播歌曲,然后使用电话呼叫,将歌曲传送过来,就像语音传递那样。
二、关于WML的常见问答
1. 简单说WML代表什么?
WML代表“Wireless Markup Language”。WML就是无线标记语言(Wireless Markup Language),内置于移动设备中的微型浏览器能够解释这种标记语言。虽然它和HTML语言很相像,但WML其实是XML的一个应用子集。
2. 什么是WML?
WML代表Wireless Markup Language,就象HTML对普通的Web浏览器一样。有人说它是基于XML,但是更准确地说WML是XML的一个应用。虽然在语法上和HTML相似,但更多的是XML。如果准备从HTML到WML,但是没有任何的XML知识,将会发现WML“非常”严格。就像HTML,WML被读取并且通过WAP设备中的浏览器解释,然后显示在屏幕上。对于WAP设备,浏览器,或者用户代理,通常叫做微型浏览器。微型浏览器的功能是受到WAP设备的限制的。
为什么使用WML而不是使用广泛的HTML原因是由于WAP的工作方式以及WAP是为一个“窄小”的无线世界工作的。在Netscape、Opera或者IE上显示HTML需要更强的计算能力。计算能力某种意义上是移动设备中的电能。由于移动设备中的电能是有限的,所以WML在发送给WAP设备之前,通常要经过转换和压缩。所以WAP使用的是WML。
读者也许可能想到WML非常简单,甚至不能处理HTML中的多媒体类型。这个不是问题。标记语言(WML、HTML等等)没有操作设备的权限,例如播放声音或者显示动画。仔细地观察HTML,就会发现没有一个HTML标签能够显示动画或者播放音乐。限制是来自于运行标记语言的浏览器。毕竟在大多数情况下,是谈论移动电话。但是这个限制应该随着无线Internet的发展而逐渐取消。
3. WML与HTML有什么区别?
虽然WML看起来十分像HTML,但是在技术上两者的差别还是很大的。WML是为微型浏览器所设计的HTML的一个子集。WML的标准定义是基于XML的。
4. Phone.com的 HDML和WML有什么区别?现在有电话支持 HDML吗?
HDML(Hand-held Devices Markup Language)是Phone.com开发的。它使得Web页面可以在移动电话上显示,其标准的公布先于WAP标准。Motorola、 Neopoint、Qualcomm 等等公司的电话使用Phone.com的浏览器,它支持HDML。最新的UP.Browser支持HDML和WAP。
5. 为什么使用WML而不是HTML?
首先是WAP协议要求使用WML。可能已经有能够支持HTML的WAP设备,但是那不是真正的。有一些和无线设备很像的WAP设备支持HTML,但它们也不是直接使用HTML(例如:Microsoft Mobile Explorer支持HTML和WML)。MME设备只是将两个分离的部分做到了一起。当然也有HTML的变种,例如 iMode 浏览器使用Compact HTML。简单的说,如果谈论WAP设备,那么标记语言就是WML。
有很多理由说明选择WML而不是HTML。现在最重要的一个原因就是WML与HTML相比需要很小的带宽。随着无线技术的提高,带宽会越来越宽。这个原因可能不再是主要原因,但是在达到这么高带宽之前需要许多年的时间。
另外一个就是HTML需要相对来说比较强的处理器。处理器的能力意味着需要更强的能量。在无线设备中能量来自于电池。而一个低处理能力的处理器就意味着电池的使用时间可以更长。
另外,HTML的确需要一个很大的显示屏幕。移动电话上的屏幕显然不能满足要求。当然也许会有一个大屏幕的移动电话,但是这样它就离移动更远(也就是说越不像移动电话)。即使iMode支持彩色和一个类似HTML的显示,它的尺寸已经是你可以方便携带的最大尺寸。
6. 为什么对于无线设备要专门设计一种特别的语言才能访问Internet ?
许多年来,HTML标记越来越丰富,越来越庞大。此外,浏览器对各种HTML标记的支持也大不相同。这种状况已经与当初想建立一个简单的标准相背离。
移动设备(例如:移动电话)具有小屏幕、内存少、缺少方便的输入设备和带宽窄的特点。这种状况驱使WAP讨论组发展一种新的为无线设备所使用的语言,WML就此诞生了。
7. 无线设备也能支持HTML格式吗?
从技术的角度上来说答案是肯定的。既然HTML是为普通PC浏览器所编写的,也可以使用微型浏览器来浏览一个HTML页面,但是可能没有效果。因为移动电话不知道如何显示该文件。这样通常导致微型浏览器出现混乱。并且HTML页面通常都比较大,它会把移动设备“撑坏”的。
8. 如何将HTML转换成WML?
当考虑转换HTML时,要想到WML是为小屏幕设计的,不可能像HTML那么丰富多采。任何转换都将忽略很多HTML标记和许多内嵌的脚本。只有一些简单的HTML页面可以被满意地转换。转换可以使用工具包如:Spyglass Prism,也可以通过在线的WAP网关过滤。
9. 用什么可以浏览到WML页面?
首先需要一个具有WAP功能的手机,例如:Nokia 71110,Ericsson R320等等。用于PC机的桌面WML浏览器也很多,例如:WinWap、WapMan等等。
10. 在哪里可以学到更多的关于XML的知识?
可以访问站点:www.w3c.org/xml。在该网站上有许多关于XML的知识有详细的讲解。
11. WML的一般语法是什么?
WML非常像XML。和HTML相比其语法规则更加严格,从而保证当微型浏览器解析和解释的时候不会有太多的错误信息。
和HTML一样,WML使用“<”和“>”组成的格式化标签。许多标签都是以<tag>开头,以</tag>结尾。在开头或者结尾中包含的部分叫做元素。有些标签叫做空元素,只有标签,没有内容,如:<tag/>。
许多元素有属性来描述应其中还有那些内容。属性名字必须小写,并且属性值必须使用双引号括起来。有些属性是必须的,有些是可选的。一般的属性标签格式就像:<tag attribute1="value">。
变量可以在WML卡片中定义,它们的一般格式是 $(variablename)。
一个WML页面有一个专门的格式,它必须以XML的文档声明为开头:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "//WAPFORUM/DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
所有的页面中的元素,都必须在<wml>和</wml>标签之间。
12. 什么是一个“deck”?
一个WML文档有许多卡片(cards)组成。一个卡片是一系列完整的WML代码。这些卡片被称为一个“deck”。卡片和“deck”的概念就有点像HTML中的锚标记<a name="#achor1">和一个HTML页面。也就是说卡片是“deck”中的一个组成部分。也可以把“deck”称为WML中的页面。它们之间的关系可以比做一副扑克牌。整副扑克牌就是deck,而每一张牌就是card。
13. 什么是WML的“deck”?
WML的“deck”或者WML文件是指decks。每个deck包含一个或者更多的card。每个deck都以<wml>开始和结束。并且每个card都以<card>开头或者结束。
当WML微型浏览器处理WML文件或者deck的时候,它阅读整个deck,并且在deck内的各个card之间进行导航。当装入deck的时候,deck里面所有的card都已经装入到内存中,直到浏览器装入另外的deck。
如果熟悉 HTML中的<a name>标签。
WML的<card>标签将是非常类似的:
<wml>
<card id="start_menu">
...some code...
</card>
<card id="purchase">
...some more code...
</card>
</wml>
deck和card可以按照这种方式调用:[deckname][#cardname]。如果deckname省略,那么浏览器就会查找当前内存里的cardname名字的card。如果使用了deckname和#cardname,那么浏览器将装入deckname的整个deck,然后跳入到#cardname。这个和HTML的工作方式很像。
14. WML是大小写敏感的吗?
是的!要注意WAP 1.1使用小写的标签。
15. 如何显示一个美元符号?
使用两个在一起的美元符号来表示,即“$$”。
16. 想显示价格的格式该怎么办?
“$”是一个特殊的字符,使用“$$”来显示一个“$”。
例如:
<p>
The price is $$11.20
</p>
17. fieldset标签有什么作用?
编写WML页面的时候要考虑到设备的屏幕很小。如果试图想把一个大的form在一个屏幕里面显示,就要指定那些标签保持在一个屏幕中。那么fieldset标签将这些标签捆绑在一个屏幕上。
18. postfield标签有什么作用?
postfield标签使允许提交参数到服务器端。注意有些早期的模拟器还不支持该标签,这将给开发工作带来麻烦!
19. WML有类似HTML的<mailto>标签吗?
没有。但是你可以使用WML表单和服务端脚本来得到同样的效果。
20. 无法让<input/>格式正常工作是怎么回事?
至少Nokia WML Reference没有讲清楚有关<input/>标签的用法。format参数控制着用户输入数据的类型和长度。
注意到不是所有的WAP 1.1浏览器都接受所有的格式化代码。例如:Nokia 7110就支持得不是很好。Mitsubishi Trium在处理“*f”代码的时候有点问题,“*”必须为1或者更大。专门的格式化代码如下:
A
从A到Z的任何大写字母,没有数字或其他字符。
a
从a到z的任何小写字母,没有数字和其他字符。
N
任何0到9的数字。
X
从A到Z从0到9的任何字符。
x
从a到z从0到9的任何字符。
M
任何字符,输入默认从大写开始。
m
任何字符,输入默认从小写开始。
*f
(星号)意味着任何数字(包括0),f是格式的代码。
nf
意味着恰好要输入的字符个数。n从1到9。f是格式代码。
是转义输出字符。
格式化字符可以组合使用来表示一种特定的格式输入。但是强制一定的输入应当避免在用户出错的时候没有提示信息。如果输入是不正确的,该填写的区域一般仍保持空白,直到让用户知道应该输入什么。如果只想输入数字,使用“*N”那么将直接转跳到数字输入模式。如果只想输入大写的字符,使用“*M”转跳到大写输入模式。现举一些例子:
“N” 只接受一个数字字符。
“*N” 接受任何数字字符。
“NN” 只接受2个数字字符,不多不少。
“ANN” 接受一个大写字符(没有数字),后面跟着两个数字,不多不少。
“X*N” 表示可以接受一个字符(没有数字)后面跟着任意多的数字字符。
“NNN-NNN-NNNN”表示接受美国的电话号码格式,例如:“123-456-1234”。
“2N:2N:2N” 表示接受时间格式,例如:“12:02:34”。
“NNNNNNNNN” 表示接受9个数字字符。
“9N” 同样表示接受9个数字字符。
maxlength参数控制着输入字符的总个数。
21. 如何防止一个空的field?
在大多数情况下需要知道用户确实是输入了一些内容在field中,不能让这些内容为空。这个可以通过在服务端的检测来完成,也可以通过WML来完成。
在WML中,这个检查可以通过合适的格式化代码来完成,或者使用一个在input标签中叫做emptyok="false" 的参数来实现(只有当必须要求用户输入的时候才使用)。如果使用了value="something" 或者value="" 用户仍然可以发送空的fields。
以下的行将接收任何值到username field, 甚至用户将整个field清空。另外field中没有任何东西,也能够提交form。
<input name="username" type="text" value="things" format="*M"/>
除了用户将整个field清空,以下的行将接收任何值到username field。如果field是空的,他将不能提交form,。
<input name="username" type="text" value="things" format="M*m"/>
以上的应用是针对大多数的浏览器。在Nokia 7110 ,emptyok参数可以有同样的效果:
<input name="username" type="text" value="things" format="*M" emptyok="false"/>
22. 使用option标签的时候,无法一屏显示完该怎么办?
许多WAP电话的显示屏幕只能显示三到四个选项。按以下的方法分割option字段就可以输入更多的选项。
<select title="longselectlist">
<optgroup title="option1">
<option>option1-1</option>
<option>option1-2</option>
<option>option1-3</option>
</optgroup>
<optgroup title="option2">
<option>option2-1</option>
<option>option2-2</option>
<option>option2-3</option>
</optgroup>
<optgroup title="option3">
<option>option3-1</option>
<option>option3-2</option>
<option>option3-3</option>
</optgroup>
</select>
23. 想有一个永久的BACK在屏幕的右下方。有些好像是自动的,若没有,该怎么做?
可以加入以下代码。
<do type="prev" label="Back">
</prev>
</do>
更好的是使用template。
……
<template>
<do type="prev" label="Back" name="back">
</prev>
</do>
</template>
……
24. WAP支持列表吗?
是的,WAP1.1支持列表和相关的标记。
25. 可以在WML中使用表单吗?
可以。但是Nokia 7110在显示表单的时候有些问题。
26. WML支持什么样的表单提交方式?
WML支持GET和POST方式。但是Nokia 7110在处理GET方式的时候有些问题。
27. WML中如何增加参数到URL字符串中?
和HTML的工作方式很像,如下所示:
……
www.someserver.com/someurl?parameter1=value1&parameter2=value2
……
唯一的不同是将“&”变成“&”。
28. 如何从WML向ASP传送数据?
假设有一个ASP叫做“myasp.asp”,并且有一个WML变量叫做 “wmlvar”。当发出请求“myasp.asp?wmlvar=something”,可以使用下面的方法得到变量的内容。
dim aspvar
aspvar = Request.QueryString("wmlvar")
ASP变量“aspvar”将包含字符串“something”。当然ASP变量也可以与WML变量同名。
29. 如何让WML页面自己更新?
有过Web经验的人喜欢使用:
<meta http-equiv="refresh" content="1;http://somewhere.com/">
来强制浏览器自动更新。
虽然在WAP中也支持一些META标签,一个更好的办法是使用<ontimer>标签。
以下的代码显示了如何自动转跳到另外一个卡片:nextdeck.wml。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="splashscreen" ontimer="nextcard.wml">
<timer value="40"/>
<p>Please wait for the timer to run out...</p>
</card>
</wml>
下面的代码将强制浏览器在一段时间后重新装入同一个卡片。这个页面叫做loop.wml。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="loop" ontimer="loop.wml">
<timer value="40"/>
<p>This text will be shown over and over again...</p>
</card>
</wml>
注意必须避免浏览器可能要使用的cache机制。
30. WML页面的最大大小是多少?
1397 bytes/deck
31. WML页面的限制是多少?
由于WAP设备只有很少的内存,因此就存在着一个最大的WML deck的界限。这里没有一个绝对的标准,根据浏览器的不同而不同。表10-5列出了几种浏览器的限制。
注意WML deck的大小是指编码压缩成二进制格式下的大小,一个没有压缩的WML deck可能很大,但是压缩后可能比较小。
表10-5 不同浏览器的限制
浏览器 压缩后的WML大小限制
UP.Browser 3.2 1492 bytes
UP.Browser 4.x 2048 bytes
Ericsson R320 大约3000 bytes
Ericsson R380 大约3500 bytes
Ericsson MC218 多于8000 bytes
Nokia 7110 1397 bytes
32. 如何防止对WML页面的非法访问?
WAP可以防止通过HTTP协议对文件和目录的非法操作。注意:有些WAP模拟器和虚拟的WAP浏览器可能不支持这个特点。在这个时候是不知道是否有可能使用其他类型的验证方式。
为了使用这种方式,用户的HTTP服务器必须支持这个特点,其实大多数服务器都支持。当一个WAP浏览器请求一个URL,它将提醒用户输入用户名和密码。这些都转换成无法直接阅读的字符,但不是加密。也就是说如果网络上有人在使用合适的设备监听,那么用户名和密码将被泄露。
这个特点在Apache文档中有详细的说明,但是文档的描述很弱,这里有如何在Apache HTTP服务器上配置的说明:
要保证Apache已经配置过,使得一个名叫.htaccess的文件可以覆盖全局的操作配置。操作配置既可以在每个目录使用分离的文件,也可以在全局的access.conf中。但是在这个例子中,我们将集中在.htaccess文件上。并且检查AllowOverride的设置。这个必须设置到AuthConfig,那样意味着Apache在目录中寻找.htaccess文件,并且使用该文件中的规则。记住在配置后要重新启动Apache服务器。
下一步是在目录里放置需要保护的文件叫做.htaccess。(注意点代表文件名的开头)。一个.htaccess文件的基本内容如下:
AuthType Basic
AuthName "WAP FAQ Authentication Demo"
AuthUserFile /home/httpd/html/wap-faq/extras/auth/auth.passwd
require valid-user
AuthType设置是指定验证的类型,AuthName指定领域,AuthUserFile指定口令文件的位置,require指定所想得到的操作。在这个例子中,任何在口令文件中的用户都有一个正确的口令。
现在需要产生一个口令文件,Apache使用一个叫做 .htpasswd来完成这个特殊格式文件的生成。运行程序如下:
#htpasswd /home/httpd/html/wap-faq/extras/auth/auth.passwd demo
New password:
Re-type password:
Adding password for user demo
注意:在第一次创建文件的时候,必须使用“-c”选项。
现在加入了一个叫做“demo”的用户,并且输入了他的密码两次。考虑到安全的原因,口令文件不应该放在文件根目录下。笔者在这里只是做演示。
现在最后就是测试,笔者建议使用HTML浏览器。输入含有想保护的URL目录的地址,一个对话框就会弹出来询问用户名和口令。如果一切顺利,就可以使用WAP浏览器来测试了。
一个目录保护的例子在这个服务器上,用户名是demo,口令是demo。可以使用HTML或者WML浏览器来做测试。
这个例子同样可以通过输入http://wap.colorline.no/demos.html来得到。
或者只要点到保护的区域:
http://wap.colorline.no/wap-faq/extras/auth/
或者查看.htaccess文件。
最后点击查看口令文件的内容。
33. 怎么使用非拉丁字符?
在文件开头加上:
encoding="ISO-8859-1"?
或者:
encoding="UTF-8"?
ISO-8859-1和UTF-8编码支持更多的字符。
34. 一些特殊字符破坏了代码和连接该怎么办?
锚/链接有时候包含了一些字母和数字之外的字符。典型的如:“~”(波浪号)和“&”(与号)。如果根据书编程,就应该告诉WAP浏览器使用的是什么字符集。这个在XML定义中可以完成:
<?xml version="1.0" encoding="iso-8859-1"?>
“iso-8859-1”是Latin字符集。这个应该在大多数场合下能满足需要。但是,还是需要对那些转义字符进行转义。即使指定了字符集,也是没有用处的。
字符实体是某些特殊字符的标准名字,例如:“&”就是“&”。
大多数浏览器在反编码名字实体的时候会出现问题,例如Nokia列出了7个兼容的名字实体:“quot”、“amp”、“apos”、“lt”、“gt”、“nbsp”和“shy”。只有在使用它们的十进制代码的时候(在上述所说的Link中),浏览器可以显示几乎所有字符。如果Nokia的浏览器接收到无法支持的实体名,它就会崩溃。
通过使用HTML或者WML浏览器(在HTML格式下,虽然不是很好),可以操作在线的实体名列表,该列表在http://wap.colorline.no/wap-faq/apps/charentref.html。
这个表同样有一个例子在:http://wap.colorline.no/demos.html。
第一步,选择将要使用的字符集,Latin1,Latin1 Mathematical和Greek symbols,最后是Latin1 Markup symbols。注意到列表被分割了,是由于deck的限制。真正的列表显示了实体名,实体的十进制值和真正的符号。从这里就可以看到哪个字符浏览器可以显示。
注意上面的在线列表,不要设置为“charset=iso-8859-1”(真正的Latin1),那是个XML定义。
35. 可能在WML页面上显示一个可选的Link吗?当用户选择后就可以直接拨号?
现在不行。但是一旦支持WTAI的设备出现,那么就可能实现。
三、关于WAP开发的常见问答
1. 开发WAP软件需要哪些工具?
为了开发WAP应用程序,需要一个WAP网关(注意:这里的网关可能是指支持WML的服务器。可以通过配置WWW服务器达到这个目的)和WAP工具包。工具包应当包括模拟器和能让开发者浏览WML网页。WML页面的开发和HTML页面的开发一样,可以使用Notepad或者其他文本编辑器来进行编辑。
2. 有哪些公司现在提供这样的开发环境?
Nokia、Ericsson、UpPhone和Motorola都提供免费的WAP网关和工具包。
Nokia:Nokia Toolkit和Nokia WAP Server。
Ericsson:Ericsson R320和WapIDE。
UpPhone:UpPhone SDK。Motorola:Motorola ADK。
3. 开发WAP应用一定要有WAP手机吗?
不是,当开发WAP应用的时候,不一定需要WAP手机。模拟器可以帮助开发者解决大部分的问题。但是如果是开发商业网站,特别是想知道各种移动电话在显示WML页面上的差别的时候,最好是配备一个。目前各种手机对WML标记的支持和中文的支持状况大不相同,因此WAP手机还是必要的。
4. 开发者需要一个WAP网关吗?
不是很必要。如果只想进行简单的WAP内容服务,可以使用现有的Web服务器(只需要修改MIME类型)。移动电话会通过坐落在本地的网关连接到你的服务器上。
但是在网关上驻留开发者的程序有很多好处。既然开发者的程序是网关的一个部分,开发者就可以知道呼叫号码、身份、位置等等。
5. 可以看到WML的源代码么?
如果开发者使用SDK浏览的时候将能够看到WML的代码。如果只有一个HTML浏览器,可以访问“Fetch Page”服务(http://www.webcab.de)来取得代码。这个可以显示在Internet上的任何WML页面中。
6. 可能在WML中加入applets吗?
不能。
7. 可以使用HTML开发工具来开发WAP应用吗?
在大多数情况下开发工具是使用基于PC的浏览器。HTML、JavaScript和Java对于WAP开发来说都没有用处。但是,越来越多的开发工具在加入对WML的支持。
Allair的Cold Fusion 4.5 和 HomeSite已经有WML支持,虽然Allair也许需要清除一些BUG。另外PHP和ASP在Coldfusion/HomeSite也能支持。
可以到 Marjolei Katsma的 HomeSite Help site 上得到更多的信息。
8. 可以通过WML页面来操作数据库吗?
可以,与创建HTML页面相同。任何相关的服务器端的技术都可以用来生成WML页面。
9. 可以使用CGI生成WML页面吗?
当然。可以用创建HTML同样的方法来创建WML。如果想书写一个CGI来创建WML,只要记住在页面的开头正确设置MIME类型。具体的形式根据所使用的语言不同而不同。例如在Perl中:
print ("Content-type:application/vnd.wap.wml nnn");
注意至少要使用2个换行。
10. 如何使用Cold Fusion来生成页面?
使用Cold Fusion只需要加上:
<CFCONTENT type="text/vnd.wap.wml">
11. 如何使用PHP来书写动态的WML页面?
PHP(和大多数其他服务端脚本语言一样)可以被用来书写动态的WML内容。只需要将输出的标记限制在WML微型浏览器可接受的范围内。
注意PHP有很多内建的HTML功能,特别是错误功能,这些功能WML微型浏览器可能无法识别。
PHP同样可以在一个HTML文件中编写出既适合于HTML,也适合于WML的内容。PHP的源代码对于客户端来说是不可见的。因此可以针对HTML浏览器输出HTML页面,针对WML浏览器输出WML页面。