WAP(wml)开发问答

当WML页面下载到WAP设备后,它将保存在WAP设备内部存款和储蓄器中一段时间,直到这一个时间过期。在这里事后,页面将从服务器下载,实际不是从WAP设备的缓存读取。那几个进度被称做Cache。可是多少时候不想让页面从缓存中读取,而是从劳动器端读取。一个规范的事例便是当服务器的剧情不断在更新的时候,通过在HTTP头中投入势必的cache音讯,来告诉WAP设备该页面将不存款和储蓄在缓存中。能够在服务器端生成HTTP头,只怕接收PHP、ASP、Perl恐怕其它服务端开荒语言。这一行无法被回顾在页面里,既然是HTTP的新闻头,就不是WML成分。对于静态页面,恐怕从未利用服务器端脚本语言,大多浏览器扶助META标签来决定浏览器的Cache。看本部分的最终的例证。将上面代码参加到HTTP头中,页面将马上过期:Expires:
Mon, 26 Jul 1996 05:00:00 博来霉素TLast-Modified: DD. month YYYY HH:MM:SS
红霉素TCache-Control: no-cache, must-revalidatePragma:
no-cache第一行告诉微型浏览器,页面已经过期一段时间了。第二行告诉浏览器页面最终一遍改革的年华。DD应该换到当天的日子,month
YY HH MM
SS等等类推。第三行和第四行有相通的效果与利益。告诉浏览器页面不被Cache。下边包车型地铁是PHP的八个例证:?//
set the correct MIME type header(“Content-type: text/vnd.wap.wml”State of Qatar;//
expires in the past header(“Expires: Mon, 26 Jul 一九九七 05:00:00 地霉素T”卡塔尔(قطر‎;//
Last modified, right now header(“Last-Modified: ” . gmdate(“D, d M Y
H:i:s”卡塔尔(قطر‎ . ” GMT”卡塔尔(قطر‎; // Prevent caching, HTTP/1.1 header(“Cache-Control:
no-cache, must-revalidate”卡塔尔国;// Prevent caching, HTTP/1.0 header(“Pragma:
no-cache”卡塔尔国;
?上面是应用WebClasses(VBState of Qatar的例子。使用”Response.Expires=-1″,制止Cache。
Private Sub WebClass_Start() ‘Set correct MIME type
Response.ContentType = “text/vnd.wap.wml” ‘Make sure no caching
Response.Expires = -1 Response.AddHeader “Pragma”, “no-cache”
Response.AddHeader “Cache-Control”, “no-cache, must-revalidate”

  1. 付出WAP软件需求怎么着工具?

   
为了开辟WAP应用程序,要求三个WAP网关(注意:这里的网关可能是指扶植WML的服务器。能够经过陈设WWW服务器达到那个指标)和WAP工具包。工具包应当包含模拟器和能让开采者浏览WML网页。WML页面包车型地铁支付和HTML页面包车型客车支出同样,能够行使Notepad只怕此外文件编辑器来开展编辑。

  1. 有怎么着公司后天提供这么的支出条件?
    摩Toro拉、Ericsson、UpPhone和三星都提供无偿的WAP网关和工具包。
    Nokia:Nokia Toolkit和Nokia WAP Server。
    Ericsson:Ericsson R320和WapIDE。
    UpPhone:UpPhone SDK。
    Motorola:Motorola ADK。
  2. 支出WAP应用应当要有WAP手提式无线电话机吗?
       
    不是,当开辟WAP应用的时候,不自然须求WAP手提式有线电话机。模拟器可以帮助开采者解决大多数的主题素材。不过倘要是付出商业网址,非常是想精通各个移动电话在显示WML页面上的反差的时候,最棒是安插一个。近来种种手提式有线话机对WML标识的支撑和普通话的支撑景况大不肖似,由此WAP手提式有线电话机照旧必不可少的。
  3. 开拓者供给二个WAP网关吗?
       
    不是很供给。假若只想拓宽简要的WAP内容服务,能够使用现成的Web服务器(只须要校勘MIME类型)。移动电话会通过坐落在本地的网关连接到你的服务器上。
       
    然则在网关上驻留开垦者的次第有无数功利。既然开拓者的程序是网关的叁个部分,开拓者就足以驾驭呼叫号码、身份、地方等等。
  4. 能够看来WML的源代码么?
       
    若是开拓者使用SDK浏览的时候将能够见到WML的代码。借使唯有二个HTML浏览器,能够访谈“Fetch
    Page”服务(http://www.webcab.de)来博代替码。这些能够来得在Internet上的此外WML页面中。
  5. 可能在WML中加入applets吗?
        不能。
  6. 能够应用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 上获得越多的新闻。
  7. 能够透过WML页面来操作数据库吗?
       
    能够,与创制HTML页面相近。任何有关的劳动器端的技巧都能够用来生成WML页面。
  8. 能够动用CGI生成WML页面吗?
       
    当然。能够用创建HTML同样的点子来创立WML。假使想书写三个CGI来创建WML,只要记住在页面包车型客车启幕准确安装MIME类型。具体的款式依据所运用的言语差别而各异。举个例子在Perl中:
    print (“Content-type:application/vnd.wap.wml nnn”); 
        注意至少要利用2个换行。
  9. 何以使用Cold Fusion来变化页面?
        使用Cold Fusion只须求加上:
        <CFCONTENT type=”text/vnd.wap.wml”>
  10. 什么利用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页面。
  11. 采纳PHP动态输出WML
       
    那几个事例生成叁个极度管用的施用名为:PizzaCalc。它将输入全体的pizza的帐单和人的数额,能够算出每一个人的花销。
       
    应用生成多少个动态的页面叫做“calc”只怕“input”。注意到持有的转义字符比方双引号。该页呈现了五个简约的变量管理,和怎么传递参数到别的的卡牌:
        使用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”);
    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>
  12. 能够使用Java Servlet来生成WML页面吗?
       
    当然。能够运用创设HTML同样的措施来创立WML。假设想书写一个CGI来创设WML,只要记住在页面包车型地铁初阶精确安装MIME类型:
        response.setContentType(“text/vnd.wap.wml”);
  13. 能够利用ASP、Perl等生成动态的采取吗?
        是的。能够动用此外地劳工动器端的脚本语言来生成WAP应用。
  14. 怎么采取ASP书写WML内容?
        ASP(Active Server
    Pages)可以达成和PHP同样,也得以用来书写动态的WML。如果须要有的好的例证请参照他事他说加以考查LucaPassani’s WAP and ASP articles。大概查看姬恩-Luc Praz’s
    (jeanluc@corobori.com)。更多的ASP例子在:。
    16.
    在选用ASP动态输出WML页面包车型客车时候,已经安装了Content-type,不过浏览器返回的还是是text/html,有如何难点呢?
       
    如若在ASP脚本中有八个不当,那么确诊程序会送还一个HTML页面,请检查脚本。
  15. 在动用ASP生成WML页面包车型大巴时候现身了不当: <MIME type “text/html” is
    not supported>,会是什么样难点?
        那几个难点是Web浏览器不明了WML的不利类型,更正ASP的首先行,加入:
        <Response.ContentType = “text/vnd.wap.wml”> 
        后就足以干活了。
  16. 下边包车型地铁代码有啥难题吧?
    <%Response.ContentType = “text/vnd.WAP.WML”%>
    <?xml version=”1.0″?>
        去掉<?xml
    version=”1.0″?>早先的空格。XML解释器希望在此行中未有其他字符,以致是空行。
  17. ASP代码能够在模拟器上中国人民解放军海军事工业程大学业作,在真的的浏览器上怎么不行?
       
    在无尽模拟器上未有像真的的WML浏览器那么严酷。那些对于这几个并未有利用网关的模拟器(NokiaSDK/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%>。
  18. 怎么行使Perl来生成WML内容?
        和此外Server端程序同样。Perl也能够用来书写美好的WAP应用程序。
       
    最广大的正是哪些利用Perl输出正确的MIME类型,上边包车型大巴例证表明了那一点:
    print “Content-type: text/vnd.wap.wmlnn”;
    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”;
    ……
  19. 应当怎样入手书写WAP应用程序?
        其实须求的只是Text编辑器。但是使用叁个开垦工具能够节省相当多岁月。
       
    在此此前应当浏览一下WAP的高尚站点:www.wapforum.com。
        在金立 WAP 开荒论坛中张开挂号,并且下载华为 WAP Developer Toolkit
    。Toolkit中的PDF文件能够交到一定的WML和WMLScript引导。一加Toolkit须要JRE (Java Runtime Environment卡塔尔(قطر‎ v.1.2.2 大概越来越高版本。
       
    固然工具得以用来为WAP设备设计应用,可是还是不是为特地的移动电话。在WAP开采工具上所见到的并不意味顾客在手机上所看见的。为了鲜明想看看的事体,最棒内需贰个WAP设备,举例移动电话,大概模拟器。
        索爱 WAP SDK
    2有三个7110的模拟器。模拟器是八个使得的检查测量试验方法,能检查测量检验程序中的bug。
    Samsung SDK 相符还满含二个小的WAP
    server让开拓者能够从地面大概HTTP服务器上下载WML页面。
        到 Phone.com 开垦站点注册后,Phone.com
    提供UP.browser。那是最流行的浏览器,极度是在美利坚联邦合众国,Phone.com 提供UP.SDK。
    在登记之后就能够下载。
        对于Ericsson 奥迪Q5320 和 宝马X3380是这段日子的事体。应该登记并查看Ericsson’s
    Developer’s Zone 来收获开垦工具。Lacrosse380是二个百般好的模拟器,在 Symbian
    无需登记就能够下载。Ericsson 未有驾驭的为凯雷德320的模拟器。
        中兴 有四个阳台叫做 Mobile Internet eXchange 大概 MIX 。Mobile
    Application Development Kit已经付出出三个支出平台,即为WAP也为一加的
    VoxML。在登记后,能够在底下的网址找到数据包。
        . 
        WAPmine 是一个独立的选拔,叫做 W应用程式age
    是一个所见即所得的编写工具。并且有二个XML树型控件来编排WML标签。
       
    假设在开采公共应用程序时,想在大多设备上测量试验你的顺序,就好像在分歧的浏览器上测量试验HTML页面相像。注意在不一样的WML浏览器上的差距,恐怕比在分歧的HTML浏览器上的异样要大。
  20. 如何编写和测量检验WML页面?
        未来有繁多SDK。AnywhereYouGo.com有WAP
    SDK和IDE列表,能够下载叁个来用。任何文件编辑器都得以挥洒二个简洁明了的WML页面,当然HTML编辑器也足以(极其是那个协助个体定义标签的),比方:Allaire
    Homesite (http://www.allaire.com
    )。能够选用SDK来做轻便的测量试验,但是对于大的类型可能要勤奋些。AnywhereYouGo.com已经创造一套基于Web的工具来赞助WAP测验。
  21. 何地能够在找到WML的测验工具?
        首先明确WML代码是不利的,然后再利用WML测量检验工具。
        有叁个非常好的测验工具在Zygo
    Communications(),测量检验工具是用Perl写的。里面还应该有别的的工具可供下载。
  22. 什么操作WML页面?
       
    操作WML页面或然卡片,最简便的方式是经过现成的网关。大好多移动电话提供者将效率都献身主页上,在上边能够因而WAP设备操作。网关的链接日常叫做“Go
    to
    U安德拉L”。当选择之后,WAP设备将经过网关操作钦赐的家常IP或许UGL450L。在此种气象下,网关读取从WAP设备发送给网关的WML内容,犹如PC浏览器读取内容的历程同样。
        有个别营业运维商选择不让他们的顾客操作其他的站点。那么些就好像Internet ServiceProvider只同意顾客操作ISP自身的站点。像那样的做法是不明智的,那样会开采自个儿的客户去另各位置了。
       
    假如要坚持到底这种措施,能够透过ISP拨号只怕利用叁个国有的网关来收获任何的WAP财富。
  23. 有未有三个融洽的点子来保管WML内容?
       
    还尚无。即便Oracale正在开荒数据库驱动的文书档案服务,被称得上Panamá共和国,能够扶持WAP分发。
  24. 什么防守顾客代理cache页面?
        要是客户使用ASP,应该投入一行<%Response.expires=-1%>
    ,这几个将截留Cache。
  25. 怎么着幸免从Cache中读取WML页面?
       
    当WML页面下载到WAP设备后,它将保留在WAP设备内部存款和储蓄器中一段时间,直到这几个时间过期。在此之后,页面将从服务器下载,实际不是从WAP设备的缓存读取。这些历程被称做Cache。
       
    可是多少时候不想让页面从缓存中读取,而是从服务器端读取。一个天下无双的例子正是当服务器的从头到尾的经过不断在改过的时候,通过在HTTP头中加入势必的cache消息,来报告WAP设备该页面将不存款和储蓄在缓存中。
       
    能够在劳动器端生成HTTP头,可能利用PHP、ASP、Perl或然其它服务端开荒语言。这一行无法被回顾在页面里,既然是HTTP的信息头,就不是WML成分。
       
    对于静态页面,只怕从未接收劳务器端脚本语言,比超级多浏览器扶持META标签来决定浏览器的Cache。看本部分的最后的例证。
        将上边代码参预到HTTP头中,页面将立时过期:
    Expires: Mon, 26 Jul 1997 05:00:00 GMT
    Last-Modified: DD. month YYYY HH:MM:SS GMT
    Cache-Control: no-cache, must-revalidate
    Pragma: no-cache
       
    第一行告诉微型浏览器,页面已经晚点一段时间了。第二行告诉浏览器页面最终二遍校勘的时辰。DD应该换到当天的日子,month
    YY HH MM
    SS等等类推。第三行和第四行有同样的效应。告诉浏览器页面不被Cache(第三行适用于
    HTTP 1.1,第四行适用于HTTP 1.0)。
        下边包车型地铁是PHP的多个例子:
    <?
    // set the correct MIME type
         header(“Content-type: text/vnd.wap.wml”);
    // expires in the past
         header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
    // Last modified, right now
         header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ”
    GMT”); 
    // Prevent caching, HTTP/1.1
         header(“Cache-Control: no-cache, must-revalidate”);
    // Prevent caching, HTTP/1.0
         header(“Pragma: no-cache”);
       ?>
       
    上面是选拔WebClasses(VBState of Qatar的例子。使用”Response.Expires=-1″,制止Cache。
     Private Sub WebClass_Start()
          ‘Set correct MIME type
          Response.ContentType = “text/vnd.wap.wml”
         
          ‘Make sure no caching
          Response.Expires = -1
          Response.AddHeader “Pragma”, “no-cache”
          Response.AddHeader “Cache-Control”, “no-cache,
    must-revalidate”
       
          ‘Use basicwml(my own) as template
          Set NextItem = basicwml
      End Sub 
        这里有一个ASP的例证,同样选择“Response.Expires=-1”幸免Cache。
    <%
        Response.ContentType = “text/vnd.wap.wml”
        Response.Expires = -1
        Response.AddHeader “Pragma”, “no-cache”
        Response.AddHeader “Cache-Control”, “no-cache, must-revalidate”
    %> 
        最终是使用META的事例:
    <?xml version=”1.0″?>
    <!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
    “”>
      <wml>
        <head>
          <meta forua=”true” http-equiv=”Cache-Control”
    content=”max-age=0″/>
        </head>
        <card id=”alway***pire”>
          <p>This deck will never be stored in the
    cache</p>
        </card>
      </wml>
        下边包车型客车页面是在经过86400秒(24 hoursState of Qatar后过期。
    <?xml version=”1.0″?>
    <!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
    “”>
      <wml>
        <head>
          <meta forua=”true” http-equiv=”Cache-Control”
    content=”max-age=86400″/>
        </head>
        <card id=”expire1day”>
          <p>This card will live in the cache for a
    day</p>
        </card>
      </wml>
       
    某些浏览器举例:UP.Simulator借使能够通过“重返”到达别的几个卡牌,那么它将不会重复装载卡牌。为了免强这些修正动作,顾客必得在META标签中选用must-revalidate
    参数。
        <meta forua=”true” http-equiv=”Cache-Control”
    content=”must-revalidate”/>
  26. 如何幸免变量被保存在Cache中?
       
    变量保存在Cache中,那样变量还可以再利用。举例当顾客重临到上三个输入卡片,他无需再行输入,只需求退换必要改动的地点。可是在一些情状下这会促成一部分难点。譬如以WAP谈天系统,某些变量用了叁次又一遍,不过需求分化的剧情。有个别浏览器,比方:中兴7110,就能够存在雷同的在该消亡的时候不或许消弭的标题。
        在WML中,<card>标签有三个参数叫做newcontext。
       
    当newcontext=”true” 时打消全体的变量。不过如此也免去了独具导航的历史记录,那意味back按键不再职业。
        为了消弭变量,能够告知浏览器将变量设为空:
    <setvar name=”one_variable” value=””/>
    <setvar name=”another_variable” value=””/>
       
    但是,不是每一种时候都有意义。在好几情状下必得运用一个不堪设想的点子来清空变量。正是利用
    onenterforward 事件。
    <onevent type=”onenterforward”>
       <refresh>
         <setvar name=”one_variable” value=””/>
         <setvar name=”another_variable” value=””/>
       </refresh>
    </onevent>
  27. 怎可以够掌握央求是从WML浏览器来的要么HTML浏览器来的?
       
    既然要使用已经存在的为HTML浏览器编写的代码,就须求精晓央求是从HTML浏览器照旧从WML浏览器过来的。相同地,假诺想再也带领的HTML浏览器直接到相应的HTML文书档案上,WML浏览器到WML页面上,以下的PHP代码就能够形成这个。
    <?
    // Because this script sends out HTTP header information,
    // the first characters in the file must be the <? PHP tag.
    // relative URL to your HTML file
       $htmlredirect = “/html/my_htmlpage.html”;
    // ABSOLUTE URL to your WML file 
       $wmlredirect = “”;
       if(strpos(strtoupper($HTTP_ACCEPT),”VND.WAP.WML”) > 0)
    {// Check whether the browser/gateway says it accepts WML.
         $br = “WML”;
       }
       else {
         $browser=substr(trim($HTTP_USER_AGENT),0,4);
         if($browser==”Noki” || // Nokia phones and emulators
            $browser==”Eric” || // Ericsson WAP phones and
    emulators
            $browser==”WapI” || // Ericsson WapIDE 2.0
            $browser==”MC21″ || // Ericsson MC218
            $browser==”AUR ” || // Ericsson R320
            $browser==”R380″ || // Ericsson R380
            $browser==”UP.B” || // UP.Browser
            $browser==”WinW” || // WinWAP browser
            $browser==”UPG1″ || // UP.SDK 4.0
            $browser==”upsi” || // another kind of UP.Browser ??
            $browser==”QWAP” || // unknown QWAPPER browser
            $browser==”Jigs” || // unknown JigSaw browser
            $browser==”Java” || // unknown Java based browser
            $browser==”Alca” || // unknown Alcatel-BE3 browser (UP
    based?)
            $browser==”MITS” || // unknown Mitsubishi browser
            $browser==”MOT-” || // unknown browser (UP based?)
            $browser==”My S” || // unknown Ericsson devkit browser
    ?
    $browser==”WAPJ” || // Virtual WAPJAG
    www.wapjag.de
    $browser==”fetc” || // fetchpage.cgi Perl script from
    www.wapcab.de
    $browser==”ALAV” || // yet another unknown UP based browser ?
            $browser==”Wapa”) // another unknown browser (Web based
    “Wapalyzer”?)
            {
            $br = “WML”;
         }
         else {
           $br = “HTML”;
         }
       }
       if($br == “WML”) {
    // Force the browser to load the WML file instead
        header(“302 Moved Temporarily”);
        header(“Location: “.$wmlredirect);
        exit;
       }
       else {
    // Force the browser to load the HTML file instead
        header(“302 Moved Temporarily”);
        header(“Location: “.$htmlredirect);
        exit;
       }
      ?> 
        那么些论断是在服务端实现的,
    PHP代码将首先查看网关是或不是抽出text/vnd.wap.vml
    MIME类型。如若不是,将检查评定后面包车型客车字符,查看是还是不是为WML浏览器。假若不切合,那么就若是为HTML浏览器。要是有新的WML浏览器,那么ID字符串也要加进。
        那些代码基于罗伯特别优惠特inger(robert@wapsight.com)的代码,使用了Don
    Amaro(donamaro.concepcion@nl.unisys.com)提供的列表。
       
    注意:由于只需求七个字符串就足以辨认,因而比如:”WapIDE-SDK/2.0;(奥迪Q3320s(Arial卡塔尔卡塔尔(قطر‎”
    能够运用“WapI”来代替是可行的做法,也是十足的。
        同样的效应也足以由此ASP来缓慢解决。先决断诉求的是“/index.wml” 也许“/index.html”
    和所急需的MIME类型。其余以下的脚本辨别的章程和方面不均等。其余还需求网关告诉服务器它能选取的text/vnd.wap.wml MIME类型。该例子如下所示:
    <%
    Response.Buffer = TRUE
      Dim IsWap
      httpAccept = LCase(Request.ServerVariables(“HTTP_ACCEPT”))
      if Instr(httpAccept,”wap”) then
      IsWap=1
      Else Response.Redirect “/index.html” : Response.Flush :
    Response.End
    End if
    %>
    <%Response.ContentType = “text/vnd.wap.wml”%><?xml
    version=”1.0”?>
    <%Response.Flush%>
    <!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
    “”>
      <wml>
      <card id=”redirect”>
      <onevent type=”onenterforward”>
      <go href=”/index.wml”/>
      </onevent>
      <p>
      <a href=”/index.wml”>enter</a>
      </p>
      </card>
      </wml>
      <%Response.Flush:Response.End%>
  28. 怎么着判别新闻报道工作者是发源哪个浏览器如故移动电话?
        能够通过检查HTTP_USER_AGENT标签来判断。比方试着使用Microsoft
    Internet
    Explorer访问三个站点的时候,HTTP_USER_AGENT将回到:Mozilla/4.0
    (compatible;MSIE 5.0; Windows 98);在同一的事态下利用iPhone7110访谈这么些站点,HTTP_USER_AGENT就能是:摩Toro拉7110/1.0(04.73)。据此能够剖断客户代理是什么品种的。
  29. 能够取得客商代理的电话号码吗?
        不能,除非网关帮助那一个天性,WAP未有主意知道客商的电话号码。
  30. 能够经过WML使得能够用WAP设备开展拨号吗?
        WAP的电话职能能够行使Wireless Telephony Application
    Interface(WTAI)。
        例如:
            WMLScript: WTAPublic.MakeCall(“9287787”); 
        然而首先代的WAP设备不协理这一个成效。
  31. 可见从WAP设备中读取数据吗,举例:电话号码?
       
    这里有局地通过HTTP的新闻,但是那么些点滴。既然唯有网关发送过来一丢丢的新闻,像WAP设备的编号只怕不能读取。同临时间,在少数国家那还提到到个人隐衷的主题材料。
       
    基本上抛弃的剧情正是WAP网关传送给HTTP服务器的源委。那不一致于WAP网关到网关。Phone.com的UP.Link网关是三个最棒的事例。因为它在HTTP头中回到一个字符串叫做
    UP_X_SUBNO,里面包蕴了电话号码。Ericsson网关将传送叁个分辨设备用的字符串,不过在青天白日中平素不电话号码。
       
    每一趟WAP设备向HTTP服务器乞请一个U奥德赛L,WAP网关就能够将信息传送给HTTP服务器。
       
    以下的PHP脚本呈现了从网关过来的持有HTTP头的音讯。可以选拔WML浏览器进行测量试验。(State of Qatar。别的的例证也足以在底下的UTL中找到:
        第一个部分是赢得富有的正统HTTP头消息。第二个部分是领取三个剧情。
    <?
      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(“<!—Code written in Microsoft NOTEPAD.EXE à n”);
    ?>
    <wml>
      <card id=”init” title=”Client Info”>
        <p>
          <?
            // First part – standard HTTP stuff
            $headers = getallheaders();
            while (list($header, $value) = each($headers)) {
              echo strtoupper($header). “: “. $value.
    “<br/>n”;       
            }
            // Second part
    // IP address of the client side
            echo(“REMOTE_ADDR: “.$REMOTE_ADDR. “<br/>n”);
    // Port at the client side
            echo(“REMOTE_PORT: “.$REMOTE_PORT. “<br/>n”);
    // Name of authenticated user
            echo(“REMOTE_USER: “.$REMOTE_USER. “<br/>n”);
    // Gateway Interface type
            echo(“GATEWAY_INTERFACE: “.$GATEWAY_INTERFACE.
    “<br/>n”);
    // Protocol used by the server
            echo(“SERVER_PROTOCOL: “.$SERVER_PROTOCOL.
    “<br/>n”);
    // Request Method
            echo(“REQUEST_METHOD: “.$REQUEST_METHOD.
    “<br/>n”);
    // Connection type
            echo(“HTTP_CONNECTION: “.$HTTP_CONNECTION.
    “<br/>n”);
    // Host it connected via (proxy)
            echo(“HTTP_VIA: “.$HTTP_VIA. “<br/>n”);
          ?>
        </p>
      </card>
    </wml> 
        Henrik Gemal
    gemal@dk.net)也是有二个在线的依据WML的工具BrowserSpy,来体现越多关于HTTP头的音信、服务器意况和顾客的浏览器等等。有关那些工具的详细的情况能够浏览
        Werner Forkel
    提交了叁个Perl的本子,可以突显电话号码(要是有)。能够在偏下义务测验:,相通也访谈在:.
       
    这一个程序只切合有个别网关。固然要测验其余的网关,只怕就显得不出电话号码。由此电话号码不可能作为ID号来拍卖。最少因为不是三个满世界的规范。
  32. 有没有方法连接到电话号码?
       
    在一些情形下,当在展现了一而再接二连三串的编号之后,要求暂停功用连接到贰个电话号码上并拨号。举个例子:推行三个dial:12345678 就丰硕像 mailt 标签。
        越来越多的浏览器都帮衬这一个意义,但还不是有所。Phone.com, MITSUBISHI和 Ericsson 已经在浏览器中合二为一了这么些基于Wireless Telephony Interface
    specifications (WTAI)的意义。
    WTAI将同意以下的UPRADOL将关门连接并且拨号:
      <go href=”wtai://wp/mc;+4712345678″>Make a call to
    +47-12345678</go> 
        魅族 7110 已经有个效果与利益叫做“Use
    Number”。它能够通过WML卡牌查找一个接近于电话号码的列表,然后客商能够挑公投办呼叫。注意客商必得抽离这么些数字以便它能符合规律干活。
  33. 选拔GET大概POST情势能传递多少字符?
       
    使用GET恐怕POST情势所能传送的字符数目,分歧的设施有不一致的界定。三个GET通过UTL传送变量,能传递的数额总数比使用POST格局所能传送的多少要小。例如,BlackBerry7110就如对各种GET 限定在511个字节左右,不过POST最大能够直达三个编写翻译后卡片的分寸(约1300字节)。UP.SDK
    4.0将GET央浼限定在970左右,最大能够达到规定的规范一个编写翻译后卡牌的深浅。
       
    明显,卡牌有的时候候保存了要发送给服务器的参数的源委,既然编译后的卡牌大小有限定,那么必定要影响到全体所能传输的多少。
        在POST和GET之间一贯不太多的界别。举个例子那么些从未很好地使用GET的例子。
    <input type=”text” name=”var1″ format=”*N”/>
       <p>
         <anchor>Send it
         <go href=”somescript.cgi?variable=$(var1)”
    method=”get”/>
         </anchor>
       </p>
       
    上边仍是二个利用GET的乞请,不过使用了<post田野(field卡塔尔国>来传送参数。那些代码就十全十美多了。既然能够定义为GET,相似也非常轻易转成POST。
    <input type=”text” name=”var1″ format=”*N”/>
       <p>
         <anchor>Send it
         <go href=”somescript.cgi” method=”get”>
           <postfield name=”variable” value=”$(var1)”/>
         </go>
         </anchor>
       </p>
        直接改为POST:
    <input type=”text” name=”var1″ format=”*N”/>
       <p>
         <anchor>Send it
         <go href=”somescript.cgi” method=”post”>
           <postfield name=”variable” value=”$(var1)”/>
         </go>
         </anchor>
       </p>
        最棒是做测量检验找到到底能传输多少数量。这里有个测验程序:

       
    这些顺序也得以在上面包车型大巴UTucsonL中找到:。
       
    该程序将生出二个卡牌满含二个变量,里面包罗了迟早数额的字符X。客户能够选用传输是接纳GET依旧POST。在传输之后,脚本将在突显接受到的字符个数。
        脚本生成四个页面来测验使用GET或许POST方式到底能发送多少个字符:
    <?xml version=”1.0″?>
    <!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
    “”>
    <wml>
      <head>
      <meta forua=”true” http-equiv=”Cache-Control”
    content=”max-age=0″/>
      <meta forua=”true” http-equiv=”Cache-Control”
    content=”must-revalidate”/>
      </head>
      <card>
      <do type=”prev” label=”Back”>
      <go href=”putsize.php3″/>
      </do>
      <p>
      <anchor>GET data
      <go method=”get” href=”putsize.php3″>
      <postfield name=”a”
    value=”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”/>
      </go>
      </anchor>
      </p>
      </card>
    </wml>
  34. 怎么同HTML站点同样POST/CGI,重回表单数据到服务器?
        假诺运用:
            <go method=”post” href=”mycgi.cgi”> 
        何况应用:
            <postfield name=”fieldname”
    value=”$NameOfInputField”/> 
        就可以POST数据给CGI程序了。
  35. POST无法职业是怎么回事?
        有非常多说POST参数将会舍弃的飞短流长,非常是在BlackBerry7110。就笔者所知,还尚无哪个索尼爱立信7110有像这种类型的主题材料。这一个主题材料重要是存在于网关或选用方。
        测验突显Samsung SDK
    2.18,当使用内建网关的时候,使用POST会现身难点。甚至当method
    设置成“POST”的时候,服务器那边还是将POST诉求作为 GET。
        当使用POST的U凯雷德L时 ,Samsung SDK
    将会崩溃。在少数情状下U凯雷德L的最终的字符将被剔除。
        POST
    Test页面将轻松的POST的七个变量叫做“var1”和“var2”来彰显任何变量的源委和HTTP头的内容。假若无法观望科学的变量内容,断定极度。检查HTTP头中的application/x-www-form-urlencoded(注意!必要在变量中输入一些剧情)。
        那一个点子化解了Moto松本穗香 SDK
    2.18的难题,能够把它安排到自由的公物网关来测验。作者推荐使用 wapHQ
    网关。
       
    在其余的情形下,POST确实不做事,难点也许是HTTP头在劳动器端解释的时候有标题。脚本语言,比方:ASP、Java或是CGI等等都是因此翻看在HTTP头中的
    application/x-www-form-urlencoded
    完全匹配的字符串。在一些情形下字符串大概有增大的数目,举例:charset=”utf8″
    。既然服务器端不是标准的非凡,它就不会翻动HTTP头,因而POST就变量错失了。
       
    注意那不是浏览器的难题,在HTTP头出席字符集描述,将促成脚本语言方面包车型客车荒诞。
        为了检查测量试验有关网关或浏览器的难点,仍使用方面包车型地铁POST
    Test页面来测量试验。相似查看application/x-www-form-urlencoded
    的出口,检查有未有增大的字符在最后部分,假使有,那么那正是劳动器端的主题材料。
       
    消除那一个难题的方案很复杂,它随客商接收的台本描述语言不一致而分裂,何况要求操作原代码。轻松地说,应用方案正是索要人工读取HTTP头,不要使用脚本语言已经写好的读取形式。
       
    这里有八个用ASP编写的缓解措施。它呈现了哪些在POST中抓取数据。顾客须要从二进制数据中窥见须求的变量。
    Dim lngToalByteCount
    Dim vntRequestData
      lngTotalByteCount = Request.TotalBytes
      vntRequestData = Request.BinaryRead(lngTotalByteCount)
        全体的代码,就应有像下边包车型地铁代码:
    <%@ Language=VBScript %>
    <%
      Dim Temp, i, sPost, sWMLDeck
      ‘Converts the binary data to a string.
      For i = 1 To Request.TotalBytes
        Temp = Request.BinaryRead(1)
        sPost = sPost & Chr(AscB(Temp))
      Next
      ‘Parses out the values of the POSTED variables (in this
      ‘example myvar1 and myvar2).
      Dim sVar1, sVar2
      sVar1 = getVar(“myvar1”, sPost)
      sVar2 = getVar(“myvar2”, sPost)
      ‘Writes the WML Deck displaying the POSTED Variables
      sWMLDeck = “<?xml version=””1.0″”?>” & vbCrLf
      sWMLDeck = sWMLDeck & “<!DOCTYPE wml PUBLIC “”-//WAPFORUM//DTD WML
    1.1//EN”” “
      sWMLDeck = sWMLDeck &
    “””””>” & vbCrLf
      sWMLDeck = sWMLDeck & vbCrLf & “<wml>” & vbCrLf & vbTab
      sWMLDeck = sWMLDeck & “<card id=””main”” title=””POST TEST””>”
    & vbCrLf
      sWMLDeck = sWMLDeck & vbTab & vbTab & “<p>” & vbCrLf
      sWMLDeck = sWMLDeck & vbTab & vbTab & vbTab & “myVar1: ” & sVar1 &
    “<br/>” & vbCrLf
      sWMLDeck = sWMLDeck & vbTab & vbTab & vbTab & “myVar2: ” & sVar2 &
    vbCrLf
      sWMLDeck = sWMLDeck & vbTab & vbTab & “</p>” & vbCrLf & vbTab
      sWMLDeck = sWMLDeck & “</card>” & vbCrLf & “>/wml>”
      Response.ContentType = “text/vnd.wap.wml”
      Response.Write(sWMLDeck)
      ‘Quick function for picking out the values of the POSTed variables.
      ‘sKey is the variable name, sRaw is the POST string.
      Private Function getVar(sKey, sRaw)
      Dim sRetVal
    If InStr(sRaw, sKey) Then
    sRetVal = Mid(sRaw, InStr(sRaw, sKey) + Len(sKey) + 1)
    If InStr(sRetVal, “&”) Then
    sRetVal = Mid(sRetVal, 1, InStr(sRetVal, “&”) – 1)
    End If
    End If
    getVar = sRetVal
      End Function
    %>
  36. 为什么META标签不做事?
        浏览器不扶助暗中同意的meta标签,比方:
        <meta http-equiv=”refresh”
    content=”1;; 
       
    即便有少许网关帮助特别轻巧的META标识。不过测验展现,假若使用了它们,网关就能出难点。举个例子某网关不接济普通的HTTP
    Cache调节,假诺要促成Cache调整只可以利用异乎平时的META标识。显著从其余网关来的客商就或者不援救这么些META。注意:不要使用META
    tags。明确有其它的点子来成功你的主见。
        最常使用的META是:
        <meta http-equiv=”refresh”
    content=”1;; 
       
    这几个报告浏览珍视新装入钦点的WML页面。WML中曾经包含了三个<ontimer>。
  37. 为何服务器收到不到顾客发送的参数?
       
    客户输入的参数可能此外参数能够像在HTML中平等通过提交形式发送到服务器。在HTML中这几个是<FORM>,POST可能GET。
       
    首先知道要掌握POST和GET的界别。对于POST浏览器将生成一个数目包将变量名和它们的开始和结果捆绑在一块,并发送到服务器。对于GET,它实际上是贰个U奥迪Q5L央浼,变量名和内容都带有在U冠道L中。
        对于WAP蒙受,供给是足够严苛的,一定要依靠公约来操作。就算以下的UCR-VL
       
    “/cgi-bin/somescript?username=john&telephone=123-123-1234&occupation=banana+bender”
       
    能够在HTML情形湖北中华工程公司作,不过在WAP情形中比较小概工作。以上的有的编码将使得爱惜的变量内容被误解。特殊的空格(在
    banana 和 bender )被转成 “+”。 UKoleosL就根本未曾空格。
        以上的UKoleosL在WAP中不能够工作的最主因是用来划分每一个变量和变量内容的 &
    (与号)未有转义。正确的格式应该是:
       
    “/cgi-bin/somescript?username=john&telephone=123-123-1234&occupation=banana+bender”
        在此边 & 被名字实体所替换。为了表明更理解些,请看上面包车型地铁代码:
    <card id=”input” title=”Gimme some data”>
      <p><input type=”text” name=”username”
    format=”M*m”/></p>
      <p><input type=”text” name=”occupation”
    format=”M*m”/></p>
    <p>
    <anchor>Send this
    <go href=”/cgi-bin/somescript?username=$(username)
    &occupation=$(occupation)”/>
    </anchor>
    </p>
       
    注意那不是真的的WAP合同,特意的字符应该转义,不然将得到不可预期的结果。
  38. 何以在HTTP中的Referer看不见?
        当HTML浏览器从一个UHighlanderL到别的八个UHavalL的时候,它默许地会发送一个名称为Referer的
    HTTP头给服务器,告诉它在浏览这一个页面早先的要命页面。那是一个丰裕有效的风味,在WAP境况中一致也可能有。但是既然那一个消息来源客商代理(浏览器)、WAP设备,平时为了节约带宽和时间,就被总结了。
        为了选择 Referer ,应该接受新的UKugaL标签举例:
    <a>,<go>等等,何况参预参数:sendreferer。
            <go href=”/somedir/somedeck.wml” sendreferer=”true”/> 
        这样就能够把参照他事他说加以调查的U宝马X3L发送到服务器。
  39. 设若未有找到UKoleosL,有望再一次将客户引导到此外三个WML卡牌恐怕页面吗?
        是的。但那是劳务器端的表征,与客商端从未涉嫌。
  40. 为什么平常的HTTP 302再一次导向糟糕使?
       
    那实乃贰个真情。大旨的主题材料是在服务端的脚本语言,并不是在服务端语言和服务器之间。
        所谓的302 Found
    HTTP反应是指服务器告诉客商代理,它所要求的能源在别的之处能够找到。302反馈大概富含叁个大伙儿可清楚的音讯,假诺在此种状态下“
    Content-type:
    ”就被安装了。笔者所测量检验过的服务器,就算未有内容也都加了“Content-type:”。暗中认可的
    “Content-type:” 是text/html。当然有个别网关不希罕那么些类型。
        以下的例子已经经过测量试验,在Apache和Microsoft Internet Information
    Server都足以干活。假如使用其余的Web
    Server,可能别的的脚本语言,要求能调换那么些归纳的脚本。关键的行事是极度简约的,除非需求,不用告诉服务器整个HTTP头。大大多Web
    Server将机关实现那些HTTP头,使得顾客代理能够领悟。
       
    全部的代码例子能够在线测量试验。假如它们能够工作,顾客将被再次教导到
    ,在这时候将生出一个WML页面来显示全体的HTTP头。
        PHP 代码测量试验能够在
    中找到。
    <?
        header(“Location: “);
        header(“Content-type: text/vnd.wap.wml”;
    ?> 
       
    Perl测量试验代码能够在中找到。 
    print “Location:
    http://wap.colorline.no/clientinfo.html\n”;
    print “Content-type: text/vnd.wap.wmln”; 
        ASP测验代码能够在 中找到。
    (注意不相同的ULacrosseL卡塔尔国: 
    <%
        Response.Redirect =
    “”;
        Response.ContentType = “text/vnd.wap.wml”;
        Response.Flush
        Response.End
    %>
  41. 可能在WML中实现ASP Session吗?
       
    不或许。能够把信息囤积在一时变量中模仿Session。Session是保留在客户PC上的“cookies”中。方今的WAP设备不协理“cookies”。可是下一代的装置和WML只怕援助“cookies”。
  42. WAP支持Session吗?
       
    在HTML中,二个要命科学普及的“管理”客商的主意就是为各样客户分配一个“session”。那个一时候是透过点名贰个必经之路的cookies来实现的。不过WAP的能源丰硕轻易,因而session的拍卖必须以分化的不二秘技来处理。
        亚历克斯 Kriegel 提供了一个设置在 WAPlinks的Custom Session
    Object包。那几个zip文件中蕴藏了VB类的公文和编写翻译过的Dll文件,还也可能有相关的文书档案。这么些足以在下载。
        别的一种方法是应用 PHPlib ,它是利用 PHP 编写的。
        Tarique (tarique@nagpur.dot.net.in)提供了哪些行使PHPlib来证实和管理每一种WAP客户。有连带的文本和注释可以到上边地址下载:
       
  43. 可以在WAP中使用Cookies吗?
       
    在理论上是足以的,但不是有所的WAP设备都帮衬。另三个主意来保管会话是使用隐蔽的田野(field)s(富含会话标志,无论是POST可能GET形式)。
  44. WAP支持Cookies吗?
        普通的HTTP
    Cookies是当作WAP的恢宏来落到实处的。无论你以前听到什么,库克ies的支撑将进一层好。实际上Phone.com的
    UP.Link网关已经扶植这么些职能有一段时间了。
        能够利用以下的脚本语言检查实验Cookie-support,:
           
        脚本在也得以获取。
       
    当第贰次见到卡牌的时候,记数器应为0。全体的Cache都被关闭。卡牌通过在UKugaL中任意地投入变量来强逼自身加载(小编不推荐这种免强加载办法)。当点击扩展计数连接,页面将重新加载,卡片就再度现身,况兼记数器形成1。
        在剧本中,Cookie的名字被称做
    TestCookie,它有十分短的生命期,由此能够隔好多天再来查看记数器,它将是上贰遍的数值。那供给您能使用与上三次访谈所采纳的WAP情状一致,不然将把您的数值清0。
        若是记数装置向来都以0,那么cookie 就从不可能传递到您的Web
    Server。这些本子也能表示Cookie是不是被传送。
        其它,这一个本子相似还显示HTTP头中的HTTP_VIA 和 HTTP_USER_AGENT
    。那个能够得到所接受的网关和形式。一些网关使用HTTP_VIS标志本人,而除此以外一些行使HTTP_USER_AGENT,还也是有一点点则让程序不可能理解。
        上面是它的PHP代码。二个专门的学业的 PHP setcookie(卡塔尔国函数独有在此种脚本语言中才会冷俊不禁。函数只是简单地安装cookie,何况PHP变量
    $HTTP_COOKIE_VAPAJEROS 用来读取cookie。
    <?
    if(isset($HTTP_COOKIE_VARS[“TestCookie”]))
    {// Check if TestCookie is set
          $cookieset = “set”;
    // Read the Cookie
          $cookieid = $HTTP_COOKIE_VARS[“TestCookie”];
      // and increase its value
          $cookieid++;
         }
        else {
      // cookie was not set
          $cookieset = “not set”;
      // start counter at zero
          $cookieid = 0;
        }
      // apply the Cookie to the HTTP header
     setcookie(“TestCookie”,$cookieid);
      // set the content type for WML
        header(“Content-type: text/vnd.wap.wml”);
    // disable ALL caching
        header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
        header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);
        header(“Cache-Control: no-cache,
    must-revalidate”);          
        header(“Pragma:
    no-cache”);                                  
        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(“<!– This application attempts to test the capabilities of a
    WAP gateway to support     cookies –>n”);
        echo(“<!– App by Espen.Lyngaas@colorline.no (c) 2000
    –>n”);
      // Generate random value for reload forcing
        $random = mt_rand(100000,999999);
     ?>
      <wml>
      <head>
    // Even more cache disabling
    <meta forua=”true” http-equiv=”Cache-Control”
    content=”must-revalidate”/> 
      </head>
      <card id=”init” title=”CookieTest”>
      <p>
       Cookie “TestCookie” was <?echo($cookieset)?>.
       Value is currently “<?echo($cookieid)?>”
      </p>
      <p>
    <anchor>
    Increase value
    <go method=”get”
    href=”<?echo($PHP_SELF)?>?random=<?echo($random)?>”/>
    </anchor>
    </p>
    <p>Gateway: 
      <?
        if(isset($HTTP_VIA))
    { // Is there something in the HTTP_VIA variable?
          echo($HTTP_VIA);
        }
        else {
          if(isset($HTTP_USER_AGENT))
    { // Is there something in the HTTP_USER_AGENT variable?
            echo($HTTP_USER_AGENT);
          }
          else {
    // Absolutely no identifier was found
            echo(“Unknown”);
          }
        }
      ?>
      </p>
      </card>
      </wml>
  45. 怎么利用WAP设备发送E-Mail?
        在HTML中有三个默许的E-Mail机制:“ mailt”
    。但在WML中不佳使,因而E-Mails必需透过WML表单来缓慢解决。比如:
    <wml>
         <card id=”edit” title=”Email Editor”>
          <p>From: <input type=”text” name=”from”
    format=”*M”/></p>
          <p>T <input type=”text” name=”to”
    format=”*M”/></p>
          <p>Subject: <input type=”text” name=”subject”
    format=”*M”/></p>
          <p>Message body: <input type=”text” name=”body”
    format=”*M”/></p>
          <p>
            <anchor>Send this mail
              <go method=”post”
    href=””>
                <postfield name=”from” value=”$(from)”/>
                <postfield name=”to” value=”$(to)”/>
                <postfield name=”subject”
    value=”$(subject)”/>
                <postfield name=”body” value=”$(body)”/>
              </go>
           </anchor>
          </p>
       </card>
    </wml> 
       
    在代码中的是贰个CGI程序,它是服务端的台本程序,将交由的表单调换来E-Mail格式并发送出去。
       
    假若想行使叁个近乎于发信的经过,就须要编写制定变量名。别的发送的数额是简单的,长音信或许必要打断。
        为了演示它是什么样专业的,下边包车型地铁 PHP
    脚本能够用来拍卖Mail。它将格式化WML页面,告诉顾客是不是爆发信件。在真实的施用中,应该参预检查评定,举例:E-Mail的法定格式。
    <?
    // Tell the client that this is a WML deck
        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”);
    // The name of your mail server
        $mailer = “wap.colorline.no”;
    // Format the from field
        $from = $from.” (WAP user at “.$mailer.”)”;
    // Add the from field and some character handling to the extra headers
      $extraheaders = $from.”nContent-Type: text/plain;
    charset=iso-8859-1nContent-Transfer-Encoding: 8bit”;
    // Start sending out the WML deck
        echo(“<wml>n”);
        if(mail($to,$subject,$body,$extraheaders))
    {// Use PHP’s internal mail functionality
    // Mail was successfully sent
          echo(“<card id=”sent” title=”Mail
    sent”>n”);
          echo(“<p>Mail was sent successfully</p>n”);
          echo(“</card>n”);
        }
        else {
    // The mail could not be sent
          echo(“<card id=”notsent” title=”Mail
    failed”>n”); 
          echo(“<p>Unable to send mail</p>n”);
          echo(“</card>n”);
        }
        echo(“</wml>n”);
    ?>
        因为安全性的缘故,以上的代码未有身体力行程序。
    48.
    得以在模拟器上操作本地的页面,却不曾章程访谈Internet上的,有哪些难题啊?
       
    大大多模拟器和工具都能够浏览Internet、Intranet和本机的页面。不过在做客一些大商店页面包车型地铁时候,必须透过代理服务器来获得步入Internet的权位。假设非得经过那么些代理服务器来赢得HTML页面,那么您的WAP模拟器也会获得权限来做客Internet。
       
    注意到多少模拟器不帮助代理服务器,但是超多是支撑的。在模拟器里面安装那些是相当的粗略的。顾客所做的只供给将代理主机的名字、IP地址和端口号输入就能够了。若无找到,你能够在
    systems/network 微电脑里面安装那么些,也能够检查 Netscape/IE的安装。
        在有些景况下,代理服务器使用 userid 和 password
    来获得步向Internet的权力。某些模拟器支持顾客代理服务器,客商应该能告诉模拟器相关的代办配置。
        在极少的动静下,使用代理服务器(如Microsoft Proxy
    Server,)的客户会碰着越多的主题材料。这几个代理服务器只选择一种申明措施(userid/password)。这种验证被称做
    NTLM ,何况是某种 MS
    的注脚办法。几乎很稀有模拟器协助这种方法。由此最棒是幸免接纳它,或许让助理馆员使用“Basic
    Authentication”格局以幸免更加多的劳顿。
  46. 什么样是PUSHing,它是什么样行事的?
        PUSH被参加到WAP 1.2,并且只在WAP
    1.第22中学才存在。轻松地以来,PUSH提供了其余一种从服务器向客商发送数据的艺术。PULLing是从顾客端哀告音信,然后选拔它;PUSH意味着服务器能够向顾客发送数据,而不要求顾客来号令。
        内容依然应用服务器不或然向客户代理直接发送数据,必需运用一种叫做Push
    Proxy 的网关。PPG 是依靠Internet的Push Initiator (内容依然应用服务器卡塔尔国与移动客户之间的。在Internet一边,使用Push Access
    Protocol,在移动网络一边选取Push Over-the-Air Protocol。
        当前独有 WAP 1.2 开荒平台援救 PUSH, 例如 OPPO Toolkit 2.0。 中兴Toolkit 2.0 only
    内部帮忙PUSHing,意味着客户能够从工具包的分界面将新闻推送到模拟器。假若想试着到三个外表的Push
    Proxy Gateway, 工具包就夭亡了。从readme文件中通晓,PUSHing
    还一贯不经过完整的测量试验。
  47. WAP模拟器说text/html不扶植,然则顾客的MIME设置是正确的,为何?
       
    当使用服务端的脚本语言,举例ASP、PHP可能Perl,来生成WML输出,恐怕从HTTP服务器提供WML页面包车型大巴时候。记住HTTP平时私下认可的体现是HTML,其MIME类型是text/html。
       
    若是HTTP服务器可能服务器脚本有乖谬,错误的新闻将应用HTML彰显,因而微型浏览器是不可能显示错误新闻的。
       
    二个开拓工具/模拟器能够让客商见到从HTTP服务器苏醒的代码。举个例子,在Moto坂口健太郎SDK中,这么些职能被称做View
    Source。通过看代码能够领略HTTP服务器到底发送了些什么内容。也得以接收普通的浏览器来查阅其余HTML格式的错误音讯。
  48. 在何方有Visio移动电话的模板库?
        近日独一知情的便是它涵盖在 红米 7110 中。
  49. 有未有此外有效的WML内容服务列表?
        这里至稀有三个。
        对于Unix用户, 中有Thomas Neill
    ponder@pwot.co.uk)提供的WML工具,包涵WML二进制编写翻译和反编写翻译。
        Angus 和 Zygo
    WAP(angus@z-y-g-o.com)已经支付出了一个Perl工具包。它还在为管道式的WML编写翻译器职业。
  50. XML到XSL的转移能够运用到WML和WAP吗?
       
    既然WML实际上是XML,况兼XSL将WML调换到其余差异的XML文书档案,那么难题的答案是分明的:XSL也足以利用到WML。可以仿照效法LucaPassani的小说《WebTechniques》。那些文章在网络上的地址是:
       
        它推荐看一下称为《在 Apache下Cocoon计划的得以完成》那篇随笔。“Cocoon
    是二个依据于新的W3C才具(举个例子DOM,XML,和XSL)框架。Cocoon布署在于更换Wen消息创立,生成和提供的艺术。文书档案内容、风格和逻辑平常因为个人仍然职业组的分歧而分歧。
    Cocoon指标在于将那三层分离,允许三档次之间开展单独的布署性,成立和治本,减弱相互之间的震慑,增添职业的可复用性以致减少上市的光阴。Web内容的发生大多数是基于HTML的,可是HTML并不能够将三者分离开来,混合着种种格式标签,程序逻辑等等。而Cocoon安顿将要改造这种情景,允许内容,逻辑清劲风骨相互分开。使用XML来保存,不过使用XSL来将它们混合。”
       
    基本上来讲,Cocoon将解读HTTP头,决断使用的是怎么浏览器,然后利用不一样的风骨来选取正确的页面,使用XSL实行混合。
    54.
    想让顾客一旦轻易地按下一个按键就可以看到转跳到任何卡牌并不是通过筛选UEvoqueL,那么些只怕吧?
        不,不可能。
  51. 如何防止八个行的制动踏板以便能够在一行中输入多少个链接?
        在金立 7110中,不恐怕毕其功于一役那或多或少,每一种链接都并吞本身的一行。
You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图