在ASP中编写WML程序
|
在ASP中编写WML程序 (1) 将WML程序使用<%和%>包含起来,格式为: <% ……(语句) %> (2) 声明wml文件类型。与前面讲述的方法相同,可采用ASP的Response对象,并将ContentType作为它的方法,但书写时不再需要使用<%和%>。格式为: Response.ContentType="text/vnd.wap.wml" (3) 对于其他的WML语句,一律采用Response对象的write方法来处理。基本格式为: Response.write("……(WML标签或语句)") 其中的“WML标签或语句”在write方法中可以连写,以节省程序代码行。 (4) 在WAP服务器端,增加服务器对ASP的处理能力。操作方法与前面介绍的一样,这里不再重述。 (5) 程序文件保存时也要采用“.asp”的扩展名。 下面的程序就是在ASP中编写WML页面的简单例子:
<% "msg = "Hello " Response.ContentType = "text/vnd.wap.wml" Response.write("<?xml version=""1.0""?><!DOCTYPE wml PUBLIC ""-//WAPFORUM//DTD WML 1.1//EN"" ""http://www.wapforum.org/DTD/wml_1.1.xml"">") Response.write("<wml><card>") Response.write("hello wml ! test ok !") Response.write("</p></card></wml>") %>
当然,我们这里给出的属于ASP与WML结合使用的简单例子,但采用这种基本方法,并利用ASP的复杂功能,便可以开发出能够实现丰富功能的WML页面。 例如,下面的ASP程序不仅可以显示“Hello”信息,同时可以显示信息的来源地或所在环境,这是通过利用Request对象的ServerVariables方法来获取服务器的HTTP_X_UP_SUBNO和HTTP_X_UP_UPLINK两个变量实现的。程序代码如下:
<% " hellowml.asp " Dim msg, subId, uplink
msg = "Hello " subId = Request.ServerVariables("HTTP_X_UP_SUBNO") uplink = Request.ServerVariables("HTTP_X_UP_UPLINK")
If Not Len(subId) = 0 Then msg = msg & "from " & subId End If If Not Len(uplink) = 0 Then msg = msg & " at " & uplink End If
Response.ContentType = "text/vnd.wap.wml" Response.write("<?xml version=""1.0""?><!DOCTYPE wml PUBLIC ""-//WAPFORUM//DTD WML 1.1//EN"" ""http://www.wapforum.org/DTD/wml_1.1.xml"">") Response.write("<wml><card><p>") Response.write(msg) Response.write("</p></card></wml>") %>
为增强大家对ASP编写WML程序的印象,我们再给出Phone.com提供的一个例子。该例的作用是根据对服务器和客户端设置测试结果的不同,给出不同的警告信息。程序代码如下:
<% " pushAlert.asp " Dim uplink, subId, url, ttl, alertType, title Dim contentType, lastResult contentType = "application/x-up-alert"
uplink = Request.ServerVariables("HTTP_X_UP_UPLINK") subId = Request.ServerVariables("HTTP_X_UP_SUBNO")
url = "http://updev.phone.com/dev/hdml/devhome3.hdml" ttl = 3600 alertType = "D---" title = "Call: " & subId
Set NtfyCl = Server.CreateObject("Ntfn3Client.Ntfn3Client.1") NtfyCl.NtfnSetHost uplink NtfyCl.NtfnSetTimeout ttl NtfyCl.NtfnPostAlert subId, url, ttl, alertType, title lastResult = NtfyCl.NtfnGetLastResult
Dim errString, msg If lastResult <> 0 Then errString = NtfyCl.NtfnGetErrorDetail If errString <> NULL Then msg = errString Else msg = "No error detail, error number: " & lastResult End If Else msg = "Sent alert to " & subId & " at " & uplink End If
Dim my, digestString set my = Server.CreateObject("PDCDigestUtils.CPDCDigest") my.DeckType = 0 my.DigestAddDeck "deck1", "<wml><card><p>" & msg & "</p></card></wml>"
my.DigestSuppressContentType 1 digestString = my.DigestSerialize(0) Response.ContentType = my.DigestGetContentType Response.BinaryWrite(digestString) %> 源代码网供稿. |
