电脑技术学习

WAP开发常见问题汇总篇

dn001

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类型: