WAP是英文“Wireless Application Protocol”的缩写,是“无线应用协议”之意。目前开发WAP主要使用的是WML标记语言。WML是一种基于XML(扩展标记语言)的一种标记语言。这种语言是为无线设备用户提供交互界面而设计的。这些无线设备包括电话、呼机和个人数字助理(Personal Digital Assistants)等等。
WML是一种语言,但算不上是程序语言。因为WML所定义的范围只限于如何表现文字、图片以及如何建立文件的链接等。单纯使用WML构成的文件只能称之为静态网页,所以我们要想让网页具备动态功能,可以借助ASP、PHP、JSP等网页技术实现。
QuickWAP就是一款辅助编写WAP网页程序的ActiveX组件,不仅ASP程序等能够调用其中的模块,而且还可以被应用程序轻松调用。下面我们重点介绍QuickWAP在开发WAP网页程序方面中的应用。
WAP编码转换
首先我们来用WML语言开发一个导航页面(文件后缀为.wml),效果如图1所示。

图1
为了更好的通用于WAP手机,我们采取了UTF-8编码。代码中需要将中文字符转换提前为UTF-8编码的形式,代码如下。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=300" forua="true"/>
</head>
<card id="FirstCard" title="中国被爱可以在线">
<p align="left">
WAP网站导航<br/>
++++++++++++++++++<br/>
<a title="确定" href="http://wap.sohu.com">搜狐</a>
<a title="确定" href="http://wap.sina.com">新浪</a>
<a title="确定" href="http://wap.163.com">网易</a>
<br/>
<a title="确定" href="http://wap.yahoo.com">雅虎</a>
<a title="确定" href="http://wap.baidu.com">百度</a>
<a title="确定" href="http://wap.china.com">中华</a> <br/>
++++++++++++++++++<br/>
<a title="确定" href="Index.asp">
返回上级
</a>
<br/>
</p>
</card>
</wml>
如果采用ASP编写的话,我们可以动态实现UTF-8编码,这样方便了我们修改,代码如下(文件后缀为.asp)。
<%Response.ContentType="text/vnd.wap.wml"%>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=300" forua="true"/>
</head>
<card id="FirstCard" title="<%=Uni("中国被爱可以在线")%>">
<p align="left">
<%=Uni("WAP网站导航")%><br/>
++++++++++++++++++<br/>
<a title="<%=Uni("确定")%>" href="http://wap.sohu.com"><%=Uni("搜狐")%></a>
<a title="<%=Uni("确定")%>" href="http://wap.sina.com"><%=Uni("新浪")%></a>
<a title="<%=Uni("确定")%>" href="http://wap.163.com"><%=Uni("网易")%></a>
<br/>
<a title="<%=Uni("确定")%>" href="http://wap.yahoo.com"><%=Uni("雅虎")%></a>
<a title="<%=Uni("确定")%>" href="http://wap.baidu.com"><%=Uni("百度")%></a>
<a title="<%=Uni("确定")%>" href="http://wap.china.com"><%=Uni("中华")%></a>
<br/>
++++++++++++++++++<br/>
<a title="<%=Uni("确定")%>" href="Index.asp">
<%=Uni("返回上级")%>
</a>
<br/>
</p>
</card>
</wml>
<%
Function Uni(Byval Chinese)
Dim i
For i = 1 to Len (Chinese)
A=Mid(Chinese, i, 1)
Uni=Uni & "" & Hex(Ascw(A)) & ";"
Next
End Function
%>
我们看到用ASP编写动态WAP网页程序,第一行必须声明ASP文件的处理方式。然后代码里面还要再定义转码函数,然后利用转码函数对每个中文字符进行UTF-8编码转换。
使用ASP编写WAP程序,确实在编辑修改方面方便了很多。那么下边我们看看QuickWAP是怎样编写这个代码的,如下所示(文件后缀为.asp)。
<%
Set Wap=Server.CreateObject("QuickWap.WapNetSdk")
Wap.CardTitle="中国被爱可以在线"
Wap.PageHeader
'以下为文件正文。
Wap.WriteRow "WAP网站导航"
Wap.WriteRow "++++++++++++++++++"
Wap.WriteOut Wap.A("确定","http://wap.sohu.com","搜狐") & " "
Wap.WriteOut Wap.A("确定","http://wap.sina.com","新浪") & " "
Wap.WriteOut Wap.A("确定","http://wap.163.com","网易") & " <br/>"
Wap.WriteOut Wap.A("确定","http://wap.yahoo.com","雅虎") & " "
Wap.WriteOut Wap.A("确定","http://wap.baidu.com","百度") & " "
Wap.WriteOut Wap.A("确定","http://wap.china.com","中华") & " <br/>"
Wap.WriteRow "++++++++++++++++++"
'以下为返回链接等信息。
Wap.WriteRow Wap.A("确定","Index.asp","返回上级")
Wap.PageFooter
Set Wap=Nothing
%>
在上边的文件代码首末我们分别创建和销毁了QuickWAP的实例化对象“Wap”,PageHeader和PageFooter两个函数创建了WAP的框架,在这个框架之间您可以像编写ASP程序那样编写正文。WriteOut和WriteRow是输出字符串的函数,并且已经内置了UTF-8编码的功能,可以直接使用它们输出要显示的内容。
比较以上三种形式的WAP程序代码,我们发现使用QuickWAP的代码最简单,除此之外他还有一个更明显的优点那就是在IE中查看也可以执行不误,而前边两个文件就必须使用手机或WAP模拟器了,在IE中浏览的效果如图2所示。

图2
使用QuickWAP编写的程序代码兼容性好了,我们也就不用再专门做WEB网页让人们在IE中预览我们的WAP站点效果,同时您在IE中查看网页的文件源代码仍然是标准的WML代码,可以直接保存为WML文件执行。
分页功能
假如我们想把下边的文字分页怎么办?
"对于熟悉ASP的开发人员,很容易就能够掌握QuickWAP组件的,因为QuickWAP的诞生就是为辅助动态WAP程序产生的。"
您也许认为很简单,文字很短,有什么难的呢,对于WML文件来说可能需要做两个卡片或两个文件,而对于ASP可要编写分页函数来实现。
在这里我们看看QuickWAP给我们提供了怎样的解决方案,我们先看分页代码实例的效果图,如图3、图4、图5所示。

图3

图4

图5
如果让您用ASP或WML程序来编写这个程序的话,至少需