WAP 输入
使用Nokia WAP 工具包, 我们现在可以加载http://localhost/cgi-bin/wap.exe 然后再一次看到第一个图所显示的输出结果.
如果我们单击编辑按纽, 我们就能够输入荷半盾的值(或者欧元, 这取决于我们在单击编辑按纽的时候选择的是哪一个域). 你可以在图D 中看到这个结果.
图D
输入一个值进行转换
如果你单击OK 按纽然后单击Convert(转换), 转换过程就开始了, 这意味着wap.exe WAP服务应用程序的 /convert PathInfo
单元被调用了. 当然, 我们必须首先实现它, 实现代码如下所示.
procedureTWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled: Boolean);
var
Guilder,Euro: Integer;
begin
Guilder :=
StrToIntDef(Request.ContentFields.Values['Guilder'],0);
Euro :=
StrToIntDef(Request.ContentFields.Values['Euro'],0);
if Guilder = 0 then
Guilder :=
Round(Euro * 2.20371)
else
Euro :=
Round(Guilder / 2.20371);
Response.ContentType := 'text/vnd.wap.wml';
Response.Content :=
'<?xml
version="1.0"?> ' + #10#13 +
'<!DOCTYPE
wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"' +
' "http://www.wapforum.org/DTD/wml_1.1.xml">'
+ #10#13 +
#10#13 +
'<wml>' +
'<card
id="euro" title="Euro Converted">' +
'<p>' +
IntToStr(Guilder) + ' guilder equals ' + IntToStr(Euro) + ' euros!' +
'</p>' +
'<do
type="next" label="Home">' +
' <go href="/cgi-bin/wap.exe"/>'+
'</do>' +
'</card>' +
'</wml>';
end;
唯一新鲜的东西是我们使用Request 对象的ContentFields 属性收集荷兰盾和欧元的值的部分。 既然 ContentFields.Values
返回一个字符串, 我们必须用StrToInt 函数将它转换成一个整数(或者StrToIntDef函数, 它在转换失败的时候会返回一个预先指定的缺省值).
如果Guilder(荷兰盾)的值是0, 我们很可能是输入了一个欧元值, 这时应该将欧元值转换成荷兰盾. 否则, 我们应该将荷兰盾的值转换成欧元.
结果是通过象我们刚才那样生成动态的WML来显示. 注意到在用户单击home 按纽的时候,我们再次使用了行为部分(或者这是WAP 会话的结束), 重新启动了wap.exe
应用程序. 最后的输出结果在图E 中显示.
图E
输出结果
为移动设备进行开发
我已经向你演示了如何建立你自己的Web 服务器来注册WML 和WBMP 文件类型, 如何使用Nokia WAP 工具包, 如何使用Delphi 6 和
WebBroker 技术来生成动态的WML, 如何从WAP 设备获取和处理WML 输入. 现在轮到你做更多的工作了.
额外的资源
你可以访问WAP 论坛Web 站点来获取WAP
2.0 最新版本的更多信息. 我还推荐你访问Nokia 论坛来获取Nokia
移动设备工具互联网应用(WAP)开发包, 以及阅读由Prentice Hall 出版的Essential
WAP for Web Professionals (ISBN: 0-13-092568-3). 最后, 你可能会对IBM
开发者Web 站点上最近的一篇关于WAP 流行势态的文章.