使用 Perl 打造无线网站 |
|---|
| WAP技术站:www.wapease.com
|
print " </card>\n"; print "</wml>\n"; 上面这个最简单的范例示范了如何在 WML 文件里面传送正确的 HTTP 与 XML 表头信息给浏览器。由于我们传送的实际上是一个 XML 文件,因此在输出资料的时候请记得要遵循正确的语法与格式。一般的网络浏览器对于内容类型或者表头宣告等信息的语法和格式都非常宽容,然而 WAP 客户端程序却非如此。 上面这个程序所输出的内容虽然是实时产生的,但是终究还是不够动态 -- 它在任何状况下送出的内容都是完全相同的。取而代之,我们可以透过 CGI 函式库来读取客户端送入的资料,并且根据这些传入的资料来实时建立新的内容传送回客户端。WML 本身被设计成尽可能越能够自给自足(self-sufficient)越好,这样的设计让页面中的每一个 deck 元素可以不需要送出新的 HTTP 请求给服务器便可以从一个 card 元素移动到另一个 card 元素。不过这也意味着你在接收从 WML 文件传入的资料的时候要格外小心,必须确认最后一个 card 元素确实有传送所有的变量到服务器端才行。 这个相较之下很简单的范例程序会从客户端读取来自不同 card 元素所送出的参数,并且将这些参数传送给服务器,然后据此建立一个新的 deck 元素。这个程序会读取来自每个 card 元素所送出的参数,并且将他们以 HTTP get 请求的型式传送给服务器。请注意在最后一个名为 finish 的 card 元素里面,我们在每一个 WML 变量(例如 $first_name)的前面全都加上一个斜线,这样才可以避免 Perl 将它们误认为 Perl 程序本身的变量来看待。一旦这些变量成功传送给服务器,我们的 CGI 程序便可以像其它任何一般的 CGI 变量那样读取它们。 控制客户端快取方式 由于 WAP 设备是在低频宽的网络环境下运作的,因此它们都相当倾向将内容储存在自身的高速缓存里面,以避免无谓的资料请求与传送过程。光是传送 CGI 参数给我们的 CGI 程序并不能保证我们送出的内容不会被 WAP 设备储存在高速缓存里面。无线上网设备会将它们储存起来,以 URL 做为索引键值,接下来每当有指向到该 URL 的请求的时候便会直接把之前储存的资料传回去,而不会向服务器询问这个页面从上次浏览过后是否已有更新过的资料。 |
| 上一篇:使用WML和ASP编写动态手机页面 下一篇:WAP中的中文显示问题 |
