网页教学网
 当前位置: 网页教学网 >> 网页制作 >> XML技术应用 >> 阅读:WAP(wml)开发问答
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

WAP(wml)开发问答

http://www.webjx.com  更新日期:2005-11-26 08:06  出处:  作者:

  1. 开发WAP软件需要哪些工具?

    为了开发WAP应用程序,需要一个WAP网关(注意:这里的网关可能是指支持WML的服务器。可以通过配置WWW服务器达到这个目的)和WAP工具包。工具包应当包括模拟器和能让开发者浏览WML网页。WML页面的开发和HTML页面的开发一样,可以使用Notepad或者其他文本编辑器来进行编辑。

  2. 有哪些公司现在提供这样的开发环境?

Nokia、Ericsson、UpPhone和Motorola都提供免费的WAP网关和工具包。
Nokia:Nokia Toolkit和Nokia WAP Server。
Ericsson:Ericsson R320和WapIDE。
UpPhone:UpPhone SDK。
Motorola:Motorola ADK。

  3. 开发WAP应用一定要有WAP手机吗?

    不是,当开发WAP应用的时候,不一定需要WAP手机。模拟器可以帮助开发者解决大部分的问题。但是如果是开发商业网站,特别是想知道各种移动电话在显示WML页面上的差别的时候,最好是配备一个。目前各种手机对WML标记的支持和中文的支持状况大不相同,因此WAP手机还是必要的。

  4. 开发者需要一个WAP网关吗?

    不是很必要。如果只想进行简单的WAP内容服务,可以使用现有的Web服务器(只需要修改MIME类型)。移动电话会通过坐落在本地的网关连接到你的服务器上。

    但是在网关上驻留开发者的程序有很多好处。既然开发者的程序是网关的一个部分,开发者就可以知道呼叫号码、身份、位置等等。

  5. 可以看到WML的源代码么?

    如果开发者使用SDK浏览的时候将能够看到WML的代码。如果只有一个HTML浏览器,可以访问“Fetch Page”服务(http://www.webcab.de)来取得代码。这个可以显示在Internet上的任何WML页面中。

  6. 可能在WML中加入applets吗?

    不能。

  7. 可以使用HTML开发工具来开发WAP应用吗?

    在大多数情况下开发工具是使用基于PC的浏览器。HTML、JavaScript和Java对于WAP开发来说都没有用处。但是,越来越多的开发工具在加入对WML的支持。

    Allair的Cold Fusion 4.5 和 HomeSite已经有WML支持,虽然Allair也许需要清除一些BUG。另外PHP和ASP在Coldfusion/HomeSite也能支持。

    可以到 Marjolei Katsma的 HomeSite Help site 上得到更多的信息。

  8. 可以通过WML页面来操作数据库吗?

    可以,与创建HTML页面相同。任何相关的服务器端的技术都可以用来生成WML页面。

  9. 可以使用CGI生成WML页面吗?

    当然。可以用创建HTML同样的方法来创建WML。如果想书写一个CGI来创建WML,只要记住在页面的开头正确设置MIME类型。具体的形式根据所使用的语言不同而不同。例如在Perl中:
print ("Content-type:application/vnd.wap.wml \n\n\n"); 
    注意至少要使用2个换行。

  10. 如何使用Cold Fusion来生成页面?

    使用Cold Fusion只需要加上:
    <CFCONTENT type="text/vnd.wap.wml">

  11. 如何使用PHP来书写动态的WML页面?

    PHP(和大多数其他服务端脚本语言一样)可以被用来书写动态的WML内容。只需要将输出的标记限制在WML微型浏览器可接受的范围内。

    注意PHP有很多内建的HTML功能,特别是错误功能,这些功能WML微型浏览器可能无法识别。
    PHP同样可以在一个HTML文件中编写出既适合于HTML,也适合于WML的内容。PHP的源代码对于客户端来说是不可见的。因此可以针对HTML浏览器输出HTML页面,针对WML浏览器输出WML页面。
    可以在开发PHP编写的WML页面的时候把以下代码加在开头:
<?
// header("Content-type: text/vnd.wap.wml");
  echo("<?xml version=\"1.0\"?>\n");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
//"http://www.wapforum.org/DTD/wml_1.1.xml\">\n\n");
?>
    基于PC的浏览器将忽略这些无法理解的WML标记。但是如果想在WAP设备或者模拟器上测试的时候,只需要将"//"去掉,页面自动变成WML页面。

  12. 使用PHP动态输出WML

    这些例子生成一个非常有用的应用叫做:PizzaCalc。它将输入所有的pizza的帐单和人的数目,可以算出每个人的花费。

    应用生成一个动态的页面叫做“calc”或者“input”。注意到所有的转义字符例如双引号。该页显示了一个简单的变量处理,和如何传递参数到另外的卡片:

    使用WML浏览器就可以测试应用程序:
        http://wap.colorline.no/wap-faq/apps/pizzacalc.html。
    或者输入:
        http://wap.colorline.no/demos.html选择应用。
<?
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>\n");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">\n\n");
echo("<!--The application PizzaCalc was originally made by The Crusaders
www.crusaders.no on the Commodore Amiga -->\n");
echo("<!-- It was unfortunately not possible to emulate the crap interger handling of the
original program -->\n");
?>
<wml>
<?
  if($action == "calc") {
    echo("<card id=\"result\" title=\"PizzaCalc\">\n");
    echo("<do type=\"prev\" label=\"Back\">\n");
    echo("<go href=\"pizzacalc.html#input\"/>\n");
    echo("</do>\n");
    echo("<p>\n");
    echo("The cost per eater will be ".$total / $eaters."<br/>\n");
  }
  else {
    echo("<card id=\"input\" title=\"PizzaCalc\">\n");
    echo("<p>\n");
echo("<anchor>Split Pizza bill
<go href=\"pizzacalc.html?total=\$(total)&eaters=\$(eaters)&action=calc\"/>
</anchor>\n");
    echo("<br/>\n");
    echo("Total cost: <input type=\"text\" name=\"total\" format=\"*N\"/>\n");
    echo("Eaters: <input type=\"text\" name=\"eaters\" format=\"*N\"/>\n");
  }
?>
</p>
</card>
</wml>

  13. 可以使用Java Servlet来生成WML页面吗? 

    当然。可以使用创建HTML同样的方法来创建WML。如果想书写一个CGI来创建WML,只要记住在页面的开头正确设置MIME类型:
    response.setContentType("text/vnd.wap.wml");

  14. 可以使用ASP、Perl等生成动态的应用吗?

    是的。可以使用任何服务器端的脚本语言来生成WAP应用。

  15. 如何使用ASP书写WML内容?

    ASP(Active Server Pages)可以做到和PHP一样,也可以用来书写动态的WML。如果需要一些好的例子请参考Luca Passani's WAP and ASP articles。或者查看Jean-Luc Praz's (jeanluc@corobori.com)。更多的ASP例子在:http://www.corobori.com/wap/。

  16. 在使用ASP动态输出WML页面的时候,已经设置了Content-type,但是浏览器返回的仍然是text/html,有什么问题吗?

    如果在ASP脚本中有一个错误,那么诊断程序会发还一个HTML页面,请检查脚本。

  17. 在使用ASP生成WML页面的时候出现了错误: <MIME type "text/html" is not supported>,会是什么问题?

    这个问题是Web浏览器不知道WML的正确类型,修改ASP的第一行,加入:
    <Response.ContentType = "text/vnd.wap.wml"> 
    后就可以工作了。

  18. 下面的代码有什么问题吗?

<%Response.ContentType = "text/vnd.WAP.WML"%>
<?xml version="1.0"?>

    去掉<?xml version="1.0"?>之前的空格。XML解释器希望在这行中没有其他字符,甚至是空行。

  19. ASP代码可以在模拟器上工作,在真正的浏览器上怎么不行?

    在很多模拟器上没有像真正的WML浏览器那么严格。这些对于那些没有使用网关的模拟器(Nokia SDK/Toolkit)来说更是这样,有些就根本没有使用网关(WinWAP、WapMAN)。

    一个真正的WML浏览器应该只读取二进制的数据(从WML编码得来的)WMLC,对于网关应该将文本WML转换/编译成WMLC。语法是非常严格的。ASP是为HTML浏览器设置的,但是HTML没有WML那么严格。

    这里在ASP生成动态页面的时候有一个微小的“bug”。它在WML浏览器上不允许有任何地方输出白行(例如:空格,回车,换行)。注意到有些网关可能会修正这些问题,但有的则不管(例如:CMG网关)。

    下面是一个常见的ASP代码用来输出WML页面开头的MIME类型:

<%Response.ContentType = "text/vnd.wap.wml"%>
<?xml version="1.0"?>

    问题就在ASP将会在 .wml"%> 和 <?xml vers 之间输出换行和回车。这两行就被分割了。这将打乱WML代码的内容。WML必须以“<”开头,而且第一行是<?xml version="1.0"?>。就上面的WML页面回车/换行将会出现问题。

    最简单的解决办法是:

    <%Response.ContentType = "text/vnd.wap.wml"%><?xml version="1.0"?>
    在XML定义正确的格式化以后,后面的部分WML对空格就没有那么严格的要求。
    要注意的是有些网关在输出ASP的时候会有问题,因此在WML代码中最好使用 Response.Write 而不是<%=MyVar%>。

  20. 如何使用Perl来生成WML内容?

    和其他Server端程序一样。Perl也可以用来书写漂亮的WAP应用程序。
    最常见的就是如何使用Perl输出正确的MIME类型,下面的例子说明了这一点:

print "Content-type: text/vnd.wap.wml\n\n";
print "<?xml version=\"1.0\"?>\n";
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
print "<wml>\n";
……

下一页

关键词:
推荐给好友】【关闭】【收藏本文
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为