此处的网关恐怕是指协理WML的服务器,no-cache第一行告诉微型浏览器
分类:博客热点

当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"卡塔尔(قطر‎;// expires in the past header("Expires: Mon, 26 Jul 1999 05:00:00 克拉霉素T"卡塔尔国;// Last modified, right now header("Last-Modified: " . gmdate("D, d M Y H:i:s"State of Qatar . " 庆大霉素T"卡塔尔; // Prevent caching, HTTP/1.1 header("Cache-Control: no-cache, must-revalidate"卡塔尔;// Prevent caching, HTTP/1.0 header("Pragma: no-cache"卡塔尔(قطر‎; ?上面是运用WebClasses(VB卡塔尔国的事例。使用"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. 有何样公司几如今提供这么的开销情状?
    Samsung、Ericsson、UpPhone和OPPO都提供无偿的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。或然查看Jean-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浏览器那么严刻。那几个对于那三个并没有利用网关的模拟器(SamsungSDK/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。
        在Samsung WAP 开拓论坛中张开挂号,而且下载索爱 WAP Developer Toolkit 。Toolkit中的PDF文件可以交到一定的WML和WMLScript引导。华为Toolkit要求JRE (Java Runtime Environment卡塔尔 v.1.2.2 只怕越来越高版本。
        就算工具得以用来为WAP设备设计应用,但是或不是为特别的移动电话。在WAP开拓工具上所观望标并不意味着客商在手提式无线电话机上所看见的。为了鲜明想看看的政工,最佳内需一个WAP设备,比如移动电话,可能模拟器。
        One plus WAP SDK 2有一个7110的模拟器。模拟器是二个可行的检验方法,能检查实验程序中的bug。 索尼爱立信 SDK 同样还满含一个小的WAP server让开垦者能够从地点恐怕HTTP服务器上下载WML页面。
        到 Phone.com 开采站点注册后,Phone.com 提供UP.browser。那是最风靡的浏览器,特别是在U.S.,Phone.com 提供UP.SDK。 在登记之后就足以下载。
        对于Ericsson Escort320 和 凯雷德380是近年来的事务。应该登记并查看Ericsson's Developer's Zone 来获取开垦工具。ENVISION380是三个百般好的模拟器,在 Symbian 无需注册就足以下载。Ericsson 未有当面包车型客车为索罗德320的模拟器。
        BlackBerry 有一个阳台叫做 Mobile Internet eXchange 大概 MIX 。Mobile Application Development Kit已经付出出多个付出平台,即为WAP也为BlackBerry的 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 UWranglerL”。当选取之后,WAP设备将经过网关操作钦命的家常IP恐怕ULacrosseL。在这里种景观下,网关读取从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 hours卡塔尔国后过期。
    <?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闲聊系统,某些变量用了叁遍又一回,但是须求分裂的剧情。有个别浏览器,比如:OPPO7110,就能设有肖似的在该消逝的时候无法消灭的主题材料。
        在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字符串也要追加。
        那个代码基于罗BertWhitinger(robert@wapsight.com)的代码,使用了Don Amaro(donamaro.concepcion@nl.unisys.com)提供的列表。
        注意:由于只须求多个字符串就足以辨认,由此比方:"WapIDE-SDK/2.0;(奥迪PB18320s(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);在同一的图景下接受Samsung7110访谈那几个站点,HTTP_USER_AGENT就能是:华为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奥迪Q5L,WAP网关就能够将音讯传递给HTTP服务器。
        以下的PHP脚本展现了从网关过来的有着HTTP头的音讯。能够利用WML浏览器进行测量试验。(卡塔尔。其余的事例也得以在底下的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将允许以下的U智跑L将闭馆连接况且拨号:
      <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格局所能传送的数目要小。举例,One plus7110就如对各样GET 限定在510个字节左右,不过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田野先生>来传送参数。这些代码就好大多了。既然能够定义为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>
        最棒是做测量试验找到到底能传输多少多少。这里有个测验程序:

        那么些顺序也得以在底下的UEnclaveL中找到:。
        该程序将发生一个卡牌富含一个变量,里面富含了必然数额的字符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参数将会甩掉的流言飞语,特别是在Nokia7110。就作者所知,还尚无哪个中兴7110有诸如此比的标题。那些难点关键是存在于网关或选拔方。
        测量试验突显黑莓 SDK 2.18,当使用内建网关的时候,使用POST会出现难点。以至当method 设置成“POST”的时候,服务器那边仍然将POST诉求作为 GET。
        当使用POST的UTiggoL时 ,One plus SDK 将会崩溃。在少数情形下URAV4L的最后的字符将被剔除。
        POST Test页面将轻便的POST的八个变量叫做“var1”和“var2”来展现任何变量的内容和HTTP头的故事情节。若是不能够看出科学的变量内容,确定有标题。检查HTTP头中的application/x-www-form-urlencoded(注意!供给在变量中输入一些剧情)。
        那几个方法解决了BlackBerry 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央求,变量名和剧情都带有在UEnclaveL中。
        对于WAP情况,必要是极度严酷的,应当要依附商业事务来操作。即使以下的U福睿斯L
        "/cgi-bin/somescript?username=john&telephone=123-123-1234&occupation=banana+bender"
        能够在HTML情形山东中华南理法高校程公司作,可是在WAP遇到中不能工作。以上的一对编码将使得爱护的变量内容被误会。特殊的空格(在 banana 和 bender )被转成 “+”。 URAV4L就一直未曾空格。
        以上的U奥迪Q5L在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浏览器从一个U哈弗L到其余三个UENVISIONL的时候,它暗中同意地会发送一个叫作 Referer的 HTTP头给服务器,告诉它在浏览那些页面从前的那多少个页面。那是多个要命实惠的风味,在WAP碰到中平等也是有。然则既然那一个消息来源客商代理(浏览器)、WAP设备,常常为了省去带宽和时间,就被轻易了。
        为了选拔 Referer ,应该采用新的U瑞虎L标签比方: <a>,<go>等等,而且参加参数:sendreferer。
            <go href="/somedir/somedeck.wml" sendreferer="true"/> 
        那样就能够把参谋的UMuranoL发送到服务器。
  39. 如若未有找到U奥迪Q5L,有希望再也将客商辅导到另外一个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测量检验代码能够在 中找到。 (注意分歧的UPRADOLState of Qatar: 
    <%
        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.inState of Qatar提供了怎么使用PHPlib来注脚和拍卖每一种WAP顾客。有有关的文书和注释能够到上边地址下载:
       
  43. 可以在WAP中使用Cookies吗?
        在争鸣上是足以的,但不是拥有的WAP设备都帮助。另五个艺术来管理会话是使用隐蔽的田野s(满含会话标记,无论是POST或然GET格局)。
  44. WAP支持Cookies吗?
        普通的HTTP 库克ies是作为WAP的扩充来兑现的。无论你在此以前听到什么,Cookies的帮助将越加好。实际上Phone.com的 UP.Link网关已经支撑这几个功能有一段时间了。
        能够行使以下的脚本语言检查评定Cookie-support,:
           
        脚本在也得以获得。
        当第二次见到卡牌的时候,记数器应为0。全部的Cache都被关闭。卡牌通过在UQX56L中随便地步入变量来抑遏本人加载(笔者不推荐这种强迫加载办法)。当点击扩张计数连接,页面将另行加载,卡牌就再度现身,並且记数器变成1。
        在本子中,Cookie的名字被称做 TestCookie,它有不长的生命期,因而得以隔好多天再来查看记数器,它将是上一回的数值。那必要你能动用与上叁次访谈所选取的WAP景况一致,不然将把您的数值清0。
        若是记数装置一贯都以0,那么cookie 就未有能传递到您的Web Server。那几个本子也能表示库克ie是还是不是被传送。
        别的,这一个本子相通还显示HTTP头中的HTTP_VIA 和 HTTP_USER_AGENT 。那几个能够获得所选择的网关和方式。一些网关使用HTTP_VIS标记自身,而其它一些应用HTTP_USER_AGENT,还大概有一点则让程序相当小概知道。
        上面是它的PHP代码。八个正经的 PHP setcookie(卡塔尔(قطر‎函数唯有在这里种脚本语言中才会产出。函数只是轻便地设置cookie,并且PHP变量 $HTTP_COOKIE_VA安德拉S 用来读取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, 例如 中兴 Toolkit 2.0。 OPPOToolkit 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服务器恢复的代码。比方,在BlackBerrySDK中,这一个效果被称做View Source。通过看代码能够通晓HTTP服务器到底发送了些什么内容。也得以行使普通的浏览器来查阅别的HTML格式的错误音信。
  48. 在何地有Visio移动电话的模板库?
        这段时间唯一知情的就是它包涵在 BlackBerry 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. 想让客户假使轻易地按下一个按键就能够转跳到此外卡牌实际不是透过选拔UEnclaveL,这么些或许啊?
        不,不可能。
  51. 如何幸免贰个行的中断以便能够在一行中输入多少个链接?
        在Samsung 7110中,不容许成功这点,每一个链接都攻下自身的一行。

本文由威尼斯在线注册平台发布于博客热点,转载请注明出处:此处的网关恐怕是指协理WML的服务器,no-cache第一行告诉微型浏览器

上一篇:选择最新版本,eclipse 快速建立PHP调试环境 下一篇:威尼斯正规官网页面之间无法传递变量
猜你喜欢
热门排行
精彩图文