3、编写请求表头
现在你已经制作供无线上网设备读取的内容了,接下来的任务便是针对不同厂商与型号的移动电话制作合适的内容了。在建立 WAP 网站的时候将会面临的最大困扰是:不同的WAP浏览器所支持的功能都稍有不同。不过,无线上网设备所传送给服务器的请求表头里面会告诉我们该软件的类型与支持的功能种类。在下面的例子中会将 WAP 浏览器传送给服务器的请求表头全部显示出来︰
#!/usr/bin/perl use CGI; print "Content-type: text/vnd.wap.wml\n\n"; print "<?xml version=\"1.0\" eencoding=\"iso-8859-1\"?>\n"; print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n"; my $input = new CGI; print "<wml>\n"; print " <card id=\"time_and_date\">\n"; foreach $header (%ENV) { if ($header =~ /^HTTP/) { print " <p>$header: $ENV{$header}</p>\n"; } } print " </card>\n"; print "</wml>\n";
不同客户端所传送过来的表头信息基本上都是大致相同的,其中有些信息你可以略过不看。但是这当中的确有些信息对我们来说是格外有用的。举例来说,正如同一般的网络浏览器那样,WAP浏览器会传送一个User-Agent字符串给服务器,该字符串的内容指明了该型号的手机所使用的浏览器类型与版本。Perl 将这个表头信息以浏览器名称/版本的型式(BROWSER/VERSION)储存在HTTP_USER_AGENT这个变量里面。这项信息之所以有用之处在于并非每一种无线上网设备的浏览器都支持 WAP 格式。你可能会遇到有些浏览器仅接受 HDML格式的内容,而非WML。你可以建立一个索引表格来纪录这些不支持 WML 的浏览器,并且将它们屏除在程序服务的范围之外。或者你也可以检查 HTTP_ACCEPT 这个表头信息的值,看看其中是否有text/vnd.wap.wml这个字符串,如果没有的话就代表该浏览器并不支持 WML 格式的内容。
此外,HTTP_X_UP_SUBNO这个表头信息代表该移动电话的全球唯一识别代码(每一部手机都不同)。你可以安全地通过这个信息来辨认出某支特定的移动电话,而不需要传送cookie。不同于没有唯一识别码的一般网络浏览器,同一支移动电话每次连结到你的服务器的时候都会传送同样的唯一识别码给你的程序。
| 第1页: 编写动态CGI程序 | 第2页: 编写请求表头 |
| 第3页: 用Mason 组件来制作WAP网站如何提供 WM... |