WAP常见问题问答大全(2)

转载 2007年09月21日 15:27:00

POST Test页面将简单的POST的两个变量叫做“var1”和“var2”来显示整个变量的内容和HTTP头的内容。如果不能看到正确的变量内容,肯定有问题。检查HTTP头中的application/x-www-form-urlencoded(注意!需要在变量中输入一些内容)。
    这个方法解决了Nokia 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 & """http://www.wapforum.org/DTD/wml_1.1.xml"">" & 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
%>
38. 为什么META标签不工作?
    浏览器不支持默认的meta标签,例如:
    <meta http-equiv="refresh" content="1;http://somewhere.com/"> 
    虽然有少量网关支持非常有限的META标记。但是测试显示,如果使用了它们,网关就会出问题。例如某网关不支持普通的HTTP Cache控制,如果要实现Cache控制只好使用特殊的META标记。显然从其他网关来的用户就可能不支持这个META。注意:不要使用META tags。肯定有其他的方式来完成你的想法。
    最常使用的META是:
    <meta http-equiv="refresh" content="1;http://somewhere.com/"> 
    这个告诉浏览器重新装入指定的WML页面。WML中已经包含了一个<ontimer>。
39. 为什么服务器接收不到用户发送的参数?
    用户输入的参数或者其他参数可以像在HTML中一样通过提交方式发送到服务器。在HTML中这个是<FORM>,POST或者GET。
    首先知道要知道POST和GET的区别。对于POST浏览器将生成一个数据包将变量名和它们的内容捆绑在一起,并发送到服务器。对于GET,它其实是一个URL请求,变量名和内容都包含在URL中。
    对于WAP环境,要求是非常严格的,必须要根据协议来操作。虽然以下的URL
    "/cgi-bin/somescript?username=john&telephone=123-123-1234&occupation=banana+bender"
    可以在HTML环境中工作,但是在WAP环境中无法工作。以上的部分编码将使得保护的变量内容被误解。特殊的空格(在 banana 和 bender )被转成 “+”。 URL就根本没有空格。
    以上的URL在WAP中无法工作的主要原因是用来分割每个变量和变量内容的 & (与号)没有转义。正确的格式应该是:
    "/cgi-bin/somescript?username=john&amp;telephone=123-123-1234&amp;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)
&amp;occupation=$(occupation)"/>
</anchor>
</p>
    注意这不是真正的WAP协议,专门的字符应该转义,否则将得到不可预料的结果。
40. 为什么在HTTP中的Referer看不见?
    当HTML浏览器从一个URL到另外一个URL的时候,它默认地会发送一个叫做 Referer的 HTTP头给服务器,告诉它在浏览这个页面之前的那个页面。这是一个非常有用的特点,在WAP环境中同样也有。但是既然这个信息来自用户代理(浏览器)、WAP设备,通常为了节约带宽和时间,就被省略了。
    为了使用 Referer ,应该使用新的URL标签例如: <a>,<go>等等,并且加入参数:sendreferer。
        <go href="/somedir/somedeck.wml" sendreferer="true"/> 
    这样就会把参考的URL发送到服务器。
41. 如果没有找到URL,有可能重新将用户引导到另外一个WML卡片或者页面吗?
    是的。但这是服务器端的特点,与客户端没有关系。
42. 为什么普通的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头,使得用户代理可以理解。
    所有的代码例子可以在线测试。如果它们能够工作,用户将被重新引导到http://wap.colorline.no/clientinfo.html ,在那儿将产生一个WML页面来显示所有的HTTP头。
    PHP 代码测试可以在 http://wap.colorline.no/wap-faq/apps/302test.php3中找到。
<?
    header("Location: http://wap.colorline.no/clientinfo.html");
    header("Content-type: text/vnd.wap.wml";
?> 
    Perl测试代码可以在http://wap.colorline.no/cgi-bin/302test.pl中找到。 
print "Location: http://wap.colorline.no/clientinfo.html/n";
print "Content-type: text/vnd.wap.wml/n"; 
    ASP测试代码可以在 http://www.colorline.no/302test.asp中找到。 (注意不同的URL): 
<%
    Response.Redirect = "http://wap.colorline.no/clientinfo.html";
    Response.ContentType = "text/vnd.wap.wml";
    Response.Flush
    Response.End
%>
43. 可能在WML中实现ASP Session吗?
    不可能。可以把信息存储在临时变量中模拟Session。Session是保存在用户PC上的“cookies”中。目前的WAP设备不支持“cookies”。不过下一代的设备和WML可能支持“cookies”。
44. WAP支持Session吗?
    在HTML中,一个十分普遍的“处理”用户的方法就是为每个用户分配一个“session”。这个有时候是通过指定一个独一无二的cookies来实现的。然而WAP的资源非常有限,因此session的处理必须以不同的方式来处理。
    Alex Kriegel 提供了一个安装在 WAPlinks的Custom Session Object包。这个zip文件中包含了VB类的文件和编译过的Dll文件,还有相关的文档。这些可以在http://www.waplinks.com/customsessionobject.zip下载。
    另外一种方法是使用 PHPlib ,它是使用 PHP 编写的。
    Tarique (tarique@nagpur.dot.net.in) 提供了如何使用PHPlib来验证和处理每个WAP用户。有相关的文件和注释可以到下面地址下载:
    http://wap.colorline.no/wap-faq/archive/phplib_wml.zip
45. 可以在WAP中使用Cookies吗?
    在理论上是可以的,但不是所有的WAP设备都支持。另一个方法来管理会话是使用隐藏的fields(包含会话标识,无论是POST或者GET方式)。
46. WAP支持Cookies吗?
    普通的HTTP Cookies是作为WAP的扩展来实现的。无论你以前听到什么,Cookies的支持将越来越好。实际上Phone.com的 UP.Link网关已经支持这个功能有一段时间了。
    可以使用以下的脚本语言检测Cookie-support,:
        http://wap.colorline.no/wap-faq/apps/cookietest.php3
    脚本在http://wap.colorline.no/demos.html也可以得到。
    当第一次看见卡片的时候,记数器应该为0。所有的Cache都被关闭。卡片通过在URL中随机地加入变量来强制自己加载(笔者不推荐这种强制加载办法)。当点击增加计数连接,页面将重新加载,卡片就再次出现,并且记数器变成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_VARS 用来读取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>
47. 如何使用WAP设备发送E-Mail?
    在HTML中有一个默认的E-Mail机制:“ mailto:” 。但在WML中不好使,因此E-Mails必须通过WML表单来解决。例如:
<wml>
     <card id="edit" title="Email Editor">
      <p>From: <input type="text" name="from" format="*M"/></p>
      <p>To: <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="http://some.host/mailhandler"?action=send/">
            <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> 
    在代码中的http://some.host/mailhandler是一个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-1/nContent-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”方式以避免更多的麻烦。
49. 什么是PUSHing,它是如何工作的?
    PUSH被加入到WAP 1.2,而且只在WAP 1.2中才存在。简单地来说,PUSH提供了另外一种从服务器向用户发送数据的方式。PULLing是从客户端请求信息,然后接收它;PUSH意味着服务器可以向用户发送数据,而不需要用户来请求。
    内容或者应用服务器无法向用户代理直接发送数据,必须使用一种叫做Push Proxy 的网关。PPG 是基于Internet的Push Initiator (内容或者应用服务器) 与移动用户之间的。在Internet一边,使用Push Access Protocol,在移动网络一边使用Push Over-the-Air Protocol。
    当前只有 WAP 1.2 开发平台支持 PUSH, 例如 Nokia Toolkit 2.0。 Nokia Toolkit 2.0 only 内部支持PUSHing,意味着用户可以从工具包的界面将消息推送到模拟器。如果想试着到一个外部的Push Proxy Gateway, 工具包就崩溃了。从readme文件中知道,PUSHing 还没有经过完整的测试。
50. WAP模拟器说text/html不支持,但是用户的MIME设置是正确的,为什么?
    当使用服务端的脚本语言,例如ASP、PHP或者Perl,来生成WML输出,或者从HTTP服务器提供WML页面的时候。记住HTTP一般默认的显示是HTML,其MIME类型是text/html。
    如果HTTP服务器或者服务器脚本有错误,错误的信息将使用HTML显示,因此微型浏览器是不能显示错误信息的。
    一个开发工具/模拟器可以让用户看到从HTTP服务器过来的代码。例如,在Nokia SDK中,这个功能被称做View Source。通过看代码可以知道HTTP服务器到底发送了些什么内容。也可以使用普通的浏览器来查看任何HTML格式的错误信息。
51. 在哪儿有Visio移动电话的模板库?
    目前唯一知道的就是它包含在 Nokia 7110 中。
52. 有没有其他有用的WML内容服务列表?
    这里至少有一个。
    对于Unix用户, http://pwot.co.uk/wml/中有Thomas Neill (ponder@pwot.co.uk)提供的WML工具,包括WML二进制编译和反编译。
    Angus 和 Zygo WAP(angus@z-y-g-o.com)已经开发出了一个Perl工具包。它还在为管道式的WML编译器工作。
53. XML到XSL的转换可以应用到WML和WAP吗?
    既然WML实际上是XML,并且XSL将WML转换成其他不同的XML文档,那么问题的答案是显然的:XSL也可以应用到WML。可以参考Luca Passani的文章《WebTechniques》。这个文章在网络上的地址是:
    http://www.webtechniques.com/archives/2000/03/passani/
    它推荐看一下叫做《在 Apache下Cocoon计划的实现》这篇文章。“Cocoon 是一个依赖于新的W3C技术(例如DOM,XML,和XSL)框架。Cocoon计划在于改变Wen信息创建,生成和提供的方式。文档内容、风格和逻辑经常因为个人或者工作组的不同而不同。 Cocoon目标在于将这三层分离,允许三层次之间进行独立的设计,创建和管理,减少相互之间的影响,增加工作的可复用性以及缩短上市的时间。Web内容的产生大多数是基于HTML的,但是HTML并不能将三者分离开来,混合着各种格式标签,程序逻辑等等。而Cocoon计划将要改变这种情况,允许内容,逻辑和风格相互分离。使用XML来保存,但是使用XSL来将它们混合。”
    基本上来说,Cocoon将解读HTTP头,判断使用的是什么浏览器,然后使用不同的风格来选择正确的页面,使用XSL进行混合。
54. 想让用户只要简单地按下一个按钮就能够转跳到其他卡片而不是通过选择URL,这个可能吗?
    不,不可能。
55. 如何避免一个行的中断以便可以在一行中输入多个链接?
在Nokia 7110中,不可能做到这一点,每个链接都占据自己的一行。

四、关于WMLScript的常见问答
1. 简单地说什么是WMLScript?
    WMLScript是一种在客户端运行的脚本语言。它是基于ECMAScript的。WMLScript和javascript非常相像,只是在功能上没有javascript丰富。从更一般的方式来说,它是一个在客户端提供简单的应用程序,而不是一个显示的操作程序。WMLScript是一个经过优化,更利于WAP应用的程序。
2. 可以将WMLScript嵌入到WML页面中吗?
    不行。不像将javascript嵌入到HTML中,WMLScript必须包含在一个独立的文件中。然后由WML调用。
3. 为什么一些Mitsubishi browsers(Trium)不能运行WMLScript?
    Mitsubishi Trium能够运行WMLScript,但是浏览器有一个设置允许关闭WMLScript的运行。像其他的HTML浏览器一样,可以关闭Java或者javascript的运行。
    当然这里会有一个毛病,即使它不能运行WMLScript,它还能接受WMLScritpt。
4. 在哪儿能学到WMLScript?
WMLScript.com的站点包含很多WMLScript的信息,甚至WMLScript library。
在Phone.com's Developer站点注册之后,可以得到很好的WMLScript版本:http://updev.phone.com/dev/ts/beta/docs/wmlscript/
五、关于WBMP的常见问答
1. 如何创建WBMP?
    RCP分发系统有Adobe Photoshop 5.x 和 PaintShop Pro的插件支持WBMP格式。GINGCO和Teraflops提供转换的工具。
2. 哪种格式的图像可以放送到WAP终端?
    WAP标准规定的BMP格式WBMP。WBMP Type 0是一个简单的黑白,非压缩的BMP格式。细节可以参考:
    http://www1.wapforum.org/tech/terms.asp?doc=SPEC-WAESpec-19990524.pdf
    如果某个WAP设备可以支持任何图像格式,那么WBMP Type 0是最小的要求。
3. 有GIF/JPEG 到WBMP的转换器吗?
    有。在http://www.imagemagick.org。在http://www.rcp.co.uk同样有一个 Adobe photoshop 的插件。
4. 有没有实时转换GIF到WBMP的工具?
    可以试试:
    NetPBM:ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/
    PBMtoWBMP:http://www.looplab.com/WAP/tools/
5. 可以在WAP页面中混合声音和文本吗?
    不。很长一段时间内不会。这是因为电话的内存有限。但是你可以试一试 Palm 或者 Windows CE 的手持设备。
6. 有一个WBMP图片在Nokia Toolkit上能正常运行,但是在Nokia 7110上却不能是为什么?
    检查一下WML代码。确定IMG标签没有高度和宽度属性,这通常导致错误。另外一个原因是图像可能太大,造成当前的页面超过1400字节。
7. 当使用WBMP作为超链接等时,在7110模拟器上不工作,为什么?
    7110不支持图像作为链接。
8. WAP设备可以使用图形而不是文本吗?
    WAP协议允许使用一种叫做WBMP的图形标准,它是一个位(黑或者白)的BMP版本。因此,所有的图形,为了适合这个协议,必须转换成WBMP。
    在使用WBMP的时候当然有很多限制,图像的大小不能超过150 x 150 像素。这是因为WAP设备的屏幕都非常有限。例如Nokia 7110 屏幕是96像素宽,65像素高。因此 150 x 150 像素看起来就特别大,占据了整个屏幕。另外受WAP电话的内存限制,图像的大小不能超过 1461 字节。
    因为不是所有的WAP设备都能显示图像。因此,<img>中的“alt”必须使用,这样才能适用于那些不能显示图像的WAP设备。
    “WAP Tiger”是一个非常简单的命令行BMP转换工具,可以去http://wap.infotiger.de/download.html下载。有 MS-DOS/Windows 和 Linux 版本。
    可以在http://www.rcp.co.uk/distributed/Downloads找到免费的Photoshop/Paint Shop Pro插件。
    Macromedia 有一个为 Fireworks的外接插件可以让用户输出WBMPs。PC版本在:
        http://download.macromedia.com/pub/fireworks/xtras/wbmp_im_ex.exe
    Mac 版本在:
        http://download.macromedia.com/pub/fireworks/xtras/wbmp_im_ex.hqx
    WebCab.de有一个非常漂亮的在线WBMP编辑器:
        http://webcab.de/woe.htm
    它能让你通过手工草稿生成、上传并编辑WBMP。如果只有服务器端的脚本语言程序,但是无法产生动态的WBMP,这是唯一的选择。
    在http://www.gingco.de/wap/有一个免费的PIC2WBMP “独立”转换器。但是这个应用需要Java 运行环境。因此如果是个新手的话,最好是下载Paint Shop Pro 插件和最新的 Paint Shop Pro,网址是:
    http://www.jasc.com/download.html
    Paint Shop Pro 对于没有注册的用户来说是有时间限制的SW。注册费用是 $99 USD 。
    Surerange Analysis Ltd 有一个免费的产品叫做ImageConvert Developer。它是一个单线程的ActiveX控件,可以将GIF和JPEG转换成WBMP。它同样有一个VC6的例子来说明如何使用。
    Applepie Solutions 提供一个在线的,基于WEB的GIF到WBMP的转换:
    http://www.applepiesolutions.com/image2.wbmp/
    如果指定用户想转换的文件的URL地址,它将让用户下载转换后的文件。
    在某些情况下用户想在HTML文档中显示WBMP。为了达到这个目的,Andre de Leiradella (leiradella@writeme.com) 已经写了一个Java和C程序来从WBMP输出GIF,看起来就好像一个小的LCD显示器。C版本可以作为CGI。应用程序可以到下面的位置找到:
    http://members.xoom.com/leiradel/。
9. 如何实现动画?
    WBMP图像不同于在HTML中广泛使用的GIF格式。它不支持动画。但是还是可以使用WML的 <ontimer> 标签来创建一个。请注意这种方式不是能达到想象中效果的。
    通过研究Animated Images Demo可以有这方面的一点概念。其网址为:
    http://wap.colorline.no/demos.html
    或者到:
    http://wap.colorline.no/wap-faq/apps/anim.html
    当在执行这样的动画方式的时候,要记住微型浏览器的内存是有限制的。不可能将所有的图片都装入到内存中。浏览器也不会装入那些过大的图片,因此某些动画可能在装入的时候就中断了。
    演示程序:
<?xml version="1.0"?>
   <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN/"
  "http://www.wapforum.org/DTD/wml_1.1.xml">
  <!-- Code written in Microsoft NOTEPAD.EXE. (c) Espen Lyngaas 2000 Color Line ASA -->
  <wml>
    <card id="image1" ontimer="#image2">
      <timer value="10"/>
      <p>
        <img src="anim1.wbmp" alt="Anim1"/>
      </p>
    </card>
    <card id="image2" ontimer="#image3">
      <timer value="10"/>
      <p>
        <img src="anim2.wbmp" alt="Anim2"/>
      </p>
    </card>
    <card id="image3" ontimer="#image4">
      <timer value="10"/>
      <p>
        <img src="anim3.wbmp" alt="Anim3"/>
      </p>
    </card>
    <card id="image4" ontimer="#end">
      <timer value="10"/>
      <p>
        <img src="anim4.wbmp" alt="Anim4"/>
      </p>
    </card>
    <card id="end" title="The End">
      <p>
         This is the end of the animation, but you can
         <anchor>run it again.
           <go href="#image1">
           </go>
         </anchor>
      </p>
    </card>
  </wml>
    如果使用PHP,可以看看更简单的程序:
<?
    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. (c) Espen Lyngaas 1999 Color Line ASA -->/n");
  ?>

<wml>

  <?
    for($card=1;$card<5;$card++) {
      echo("<card id=/"image".$card."/" ontimer=/"#image".$card+1.">"/n");
      echo("<timer value=/"10/"/>/n");
      echo("<p>/n");
      echo("<img src=/"anim".$card.".wbmp/" alt=/"Anim".$card."/"/>/n");
      echo("</p>/n");
      echo("</card>/n");
    }
  ?>
  <card id="image5" title="The End">
  <p>
    This is the end of the animation, but you can
    <anchor>run it again.
      <go href="#image1">
      </go>
    </anchor>
  </p>
  </card>
  </wml>
10. 如果WBMP图片看起来糟糕极了,该怎么办?
    WBMP只有两种颜色,要是图片漂亮需要一定的技巧。但是可以减少图片的颜色。这里有一个叫做Floyd-Steinberg的方法可以做到。这样的一个程序是Jasc Paint Shop Pro。Paint Shop Pro的价格不是很贵,而且有直接保存为WBMP的插件。还可以使用30天免费版本。
11. 能够生成动态的WBMP图像吗?
    当然。可以使用PHP、ASP 或者 Perl 来完成。这可能需要一种图像转换工具,因为服务端的脚本语言不支持WBMP的转换。
    下面有一个PHP 的例子来说明使用脚本语言来完成的过程。
    因为当前版本的GD不再创建GIF图像,而是称作PNG (Portable Network Graphics)图像。所以使用当前版本的PHP,只需要修改少量的代码就可以将GIF 转换到 PNG。另外,可以用“DuPont’s Image Magick ”将PNG 或者转换成 WBMP,它能在两者之间相互转换,并适合于多种平台。
    在代码里,笔者用到了PHP功能 ImageCreateFromGif(),要输一些文本到GIF图像上,可以使用PHP的 ImageGreate()创建一个空白的 GIF/PNG 图像。
    以下是代码:
<?
 // hardcoded "variables" are safer!
// path to blank GIF file – not really needed (see above)
    $blank = "./wapclock_blank.gif";
// You can look at it here
// path to input file generated by PHP
    $input = "/tmp/wapclock.gif";
// path to temporary output file. Extension is irrelevant
    $output = "/tmp/wapclock.out";
// path to ImageMagick convert
    $convert = "/usr/local/bin/convert";
    if($format == "gif") {
// if it’s GIF, send that Content-type
       header("Content-type: image/gif");
       $type = "GIF";
    }
    else {
      if($format == "wbmp") {
// if it’s WBMP, send that Content-type
        header("Content-type: image/vnd.wap.wbmp");
        $type = "WBMP";
      }
      else {
   // hope that the browser can read this
        header("Content-type: text/plain");
   // or someone forgot to set the format variable
        $type = "";
      }
    }
  // turn off 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");
 
// create a GIF file from an empty GIF file (see faq)
    $im = imagecreatefromgif($blank);

// put the current time into the time variable
    $time = date("H:m:s");

// Place time variable sort of in the middle, with font size 4
    imagestring($im,4,6,15,$time,0);
// generate a GIF file with PHP (see faq)
    ImageGif($im,$input);
// empty the GD temporary buffer
    ImageDestroy($im);

    if(strlen($type) > 0) {
// if the type is known
// do the conversion
      exec($convert. " ".$input. " ".$type. ":".$output);
    }
    else {
// or do nothing
      echo("Unknown format!/n");
// and stop
      exit;
    }
 // open the converted file
    $fd = fopen($output, "r");
// read verything into a variable
    $contents = fread($fd,filesize($output));
// close the file
    fclose($fd);
// pour out the contents
    echo($contents);
  ?>
    以上的代码是输出GIF的WBMP数据流。为了使用真正的图像,必须像下面这么写:
<?
    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. (c) Espen Lyngaas 2000 Color Line ASA à /n");
 ?>

  <wml>
    <card id="wapclock" title="WAP Clock">
      <do type="prev" label="Reload Image">
        <go href="<?echo($PHP_SELF)?> "/>
      </do>
      <p>
        <img src="http://wap.colorline.no/wap-faq/apps/gfxclock.html?format=wbmp"
alt="You should see an image…"/>
      </p>
    </card>
  </wml>
12. 针对多大的屏幕进行开发?
    WAP设备的显示状况千差万别,有些支持图形,有些只支持文本。下面给出一些型号的屏幕尺寸:Mitsubishi 还没有公布的WAP电话有3行12个字符的显示器。Nokia 7110 的屏幕是96个像素宽,65个像素高,最大的显示图像是95个像素宽,45的像素高,高和宽的比例大约是1.25。因此一个正方型应该是一个实际宽高比为1:1.25的长方形,对于圆来说也是一样。
    Ericsson's R320 有一个类似大小的显示屏幕。精确的大小是101像素宽,52像素高。可以显示4行文本,而且自动换行是默认的方式。
    Ed Chew(Ed.Chew@scoot.co.uk) 检验过 “R380 Design Guideline for WAP Services”, 并且发现在Ericsson R380 有 360x120 像素的分辨率 (83x28mm),  0.23点距,浏览区域是限制在310(宽),100(高) pixels ,包括顶部的两个像素的空格,左边和右边的三个像素的空格,因此实际上只有304 x 98 像素。
    为了弄清显示器到底有多大的大小,在http://wap.colorline.no/demos.html (选择 “Resolution matrix”)有一个分辨矩阵的演示程序。 页面将显示三个不同大小的图像,一个垂直和一个水平,它们是一个方向上十个像素,另外一个方向上只有一个像素,这样你马上就能知道屏幕到底有多大。另外他们的大小是:80x80,100x100 和 120x120像素,因为有些浏览器不能装载那些过大的图片。
    由于有些显示器的点是长方形的,而不是正方形的,所以开发人员需要重新影射图像,让他们看起来像正方形,圆看起来像圆。但笔者不推荐这个方法,除非你知道用户所使用的WAP设备的真正比例。一个在7110上看起来很好的图到了R380上会很糟糕。
13. 在WML中可以预先装入图片吗?
    在HTML中,图片可以先使用简单的javascript来装入。但是在WML或者WMLScript中没有这样的方法。 Paul St. George(email@paulstgeorge.com)提供了一种欺骗浏览器,让它装入图片但不显示的办法。对于图片,如果足够小,可以事先读入到WAP的Cache中。如果所有的图像都能够装入的话,就不需要连接到服务器上了。
    首先需要一个能够撑满屏幕的透明图片,因此它们是一个像素宽,并且和显示屏幕具有相同的高度。将图片做成透明的,这样它将占据整个屏幕,然后装载剩下的图片,等图片装载完后timer启动,开始动画。
    在下面的例子中,可能需要改变一下timer的数值,让它有时间来装入图片。
<wml>
    <card id="p" ontimer="#f1">
    <!-- Adjust this timer to taste. -->
    <timer value="10"/>
      <p align="center">
        <img src="spacer1.wbmp" alt="x"/>
      </p>
      <p>
        <img src="1.wbmp" alt="1"/>
      </p>
      <p>
        <img src="2.wbmp" alt="2"/>
      </p>
      <p>
        <img src="3.wbmp" alt="3"/>
      </p>
      <p>
        <img src="4.wbmp" alt="4"/>
      </p>
      <p>
        <img src="5.wbmp" alt="5"/>
      </p>
    </card>

    <card id="f1" ontimer="#f2">
      <timer value="10"/>
      <p align="center">
        <img src="spacer15.wbmp" alt="x"/>
      </p>
      <p align="center">
        <img src="1.wbmp" alt="1"/>
      </p>
    </card>

    <card id="f2" ontimer="#f3">
      <timer value="10"/>
      <p align="center">
        <img src="spacer10.wbmp" alt="x"/>
      </p>
      <p align="center">
        <img src="2.wbmp" alt="2"/>
      </p>
    </card>

    <card id="f3" ontimer="#f4">
      <timer value="10"/>
      <p align="center">
        <img src="spacer08.wbmp" alt="x"/>
      </p>
      <p align="center">
        <img src="3.wbmp" alt="3"/>
      </p>
    </card>

    <card id="f4" ontimer="#f5">
      <timer value="10"/>
      <p align="center">
        <img src="4.wbmp" alt="4"/>
      </p>
    </card>

    <card id="f5" ontimer="#f1">
      <timer value="10"/>
      <p align="center">
        <img src="5.wbmp" alt="5"/>
      </p>
    </card>
  </wml>
14. 为什么有些WBMP无法显示?
    图像可以使用<img>标签来指示。大多数无法显示的情况是因为错误地使用了<img>语法。这个标记至少要有src和alt两个参数。其他参数是可选的。src指定图像的来源,alt指定当图像不能显示的时候显示的内容,并且在最后有反斜杠结尾。
    <img src="path/filename.wbmp" alt="Alternative Text"/> 
如果页面是由HTTP服务器提供的,服务器也必须设置WBMP正确的MIME类型。正确的类型是“image/vnd.wap.wbmp”。
    问题也可能出在图像本身,因为WBMP的格式非常有限,只有黑白两色,而且大小要适合WAP设备。有些WAP开发工具让允许使用GIF图片,但是WAP设备只支持WBMP图片。

六、关于WAP网关的常见问答
1. 什么是WAP网关?
    WAP网关是一个软件。它连接Internet或者Intranet,使得WAP电话可以来访问其中的资源。有些网关可能具有将HTML文件转换为WML页面的功能。
    WAP网关在WAP设备与Web服务器之间的连接中有好多功能。这些功能基本上是:
将标记语言(WML)从文本转换成可以被WAP设备读懂的编码(二进制/压缩的)格式;
将WAP设备的请求转换成Web中的HTTP请求;
在Web和WAP之间实现SSL加密和WTLS加密的转换;
在Web和WAP之间的传输层之间实现TCP和WDP的转换。
    网关还具有一些其他可选的功能,例如将Text文件,HTML文件转换成可读的WAP格式。如果网关安装在移动营运商一边,移动营运商可能利用网关加入一些特殊的信息到HTTP流中,例如电话号码,位置信息等等。
    有些WAP网关是在Internet上公开的,但是另外一些是在移动营运商那边,并且经常限制只接受从营运商那边的WAP设备。
    少数网关,或者像网关的设备 (“WAP Servers”)在内容提供商那边,这些人拥有WAP内容服务器。
2. 什么是WAP Server?
    除了集成的WAP Gateway ,WAP Server不比普通的Web Server多太多。笔者个人认为“WAP server”这个概念非常混淆。许多人认为必须有一个WAP Server才能提供WAP的内容,但是这不正确。WAP内容可以由任何普通的Web Server提供。
    那么WAP Server的要点是什么呢?当讨论到WAP的安全性的时候,WAP Server可以减少WAP环境中的安全漏洞。
    既然WAP Server包含一个网关,因此可以跳过安装在移动营运商那边的第三方网关,并且主机上的应用程序对加密数据流有完全的控制能力。
    注意如果要让用户能够访问网关,就需要正确的配置他们的WAP设备,大多数情况下是手工配置。
3. 在哪儿可以得到WAP网关?
    Nokia的网关可以在http://www.nokia.com/corporate/wap得到。
4. WAP网关是一个像Server那样的物理设备吗?它是在Internet提供商还是移动提供商那边?
    WAP Gateway是一个 WinNT或者 Linux机器上运行的WAP Server软件。它可以在Internet上的任何位置,既可以在Internet提供商那边,也可以在移动提供商那边,还可以在用户的PC机上。
5. 安装Nokia WAP Toolkit后如何设置网关,拨号等等,以便可以使用用户的主页?
    启动Nokia WAP Toolkit,找到 Menu>Toolkit>Preferences。 选择“Use WAP gateway”选项,给出WAP网关所在的地址(127.0.0.1, 如果在本机运行网关程序)。用户可以从Menu>Go>Load中指定URL。
6. 哪个公司提供WAP Server的源代码?
    open source gateway 在 http://www.kannel.org/中提供。
7. 可以在广域网络中使用网关吗?
    只要能通过拨号访问到网关的IP地址,在哪儿都是一样。
8. 在哪里能找到有关网关的资料?
    在很多情况下用户可能想使用多个网关来测试应用程序。因为他们以不同的方式工作。所以可能需要连接到其他的网关,而不仅仅使用由移动营运商提供的网关。
    WAPdrive.net 有一个个非常好的公共网关列表:
        http://www.wapdrive.net/DOCS/wap_gateways.htm
    这里面有一些没有公布的网关。如果IP地址以“10.”开头,那么网关就是私有的,是营运商自己的。其他IP地址的网关,也不一定就是公共网关。
9. 为什么HTTP User_Agent字符串在Phone.com的网关中有所不同?
如果查看从Phone.com的UP.Link网关发送给服务器的HTTP头,将发现User_Agent有所不同。UP.Link网关将名字和版本名称写在这里面。
    如果用户来自Nokia或者爱立信的网关,那么User_Agent就像下面的:
    EricssonR320/R1A
    如果用户来自UP.Link网关,就如同下面的:
    EricssonR320/R1A UP.Link/4.1.0.1
    它们清楚地显示了网关的类型和版本。从这里可以清楚的知道用户所使用的网关类型和版本。

七、关于WAP浏览器的常见问答
1. 什么是微型浏览器?
    类似于PC上的Internet Explorer 或者 Netscape interpret HTML。WAP微型浏览器的地位等价于一个在手持设备上运行并解释WML的软件。
2. 在移动电话上,WML最大可以是多少?
    这个根据不同电话而不同。只要保持编译后的页面不要超过1400字节就可以了。
3. WAP客户端上运行的是什么操作系统?
    只要客户端有WML微型浏览器,任何操作系统都可以。目标设备可以使用Windows CE、EPOC、PalmOS或者其他合适的操作系统。
4. WAP用户代理可以Cache页面吗?
    Nokia 7110可以Cache页面。Cache的大小在40k左右。
5. 哪儿有更新的代理列表资源?
    如何测试浏览器的方法在以上的文章中有讲述。因此现在是需要一个很大的代理列表。这个列表将帮助检测浏览器的类型。
    这个文件是使用逗号分隔(Comma Separated Values)的格式。第一行是浏览器的名字,第二行是浏览器的描述。
    User Agent ID 在 http://wap.colorline.no/wap-faq/useragents.php3 (注意这个文件是一个简单的ASCII文件,虽然它是以.PHP3结尾。)
    这个文件可以随便拷贝。
6. 能不能通过浏览器语言的选择来本地化文本?
    作为任何一个好的HTML浏览器,应该可以阅读由WAP设备配置的语言而不依赖于Web服务器向它发送了什么样的HTTP头。许多设备都这样。
    HTTP头中有一个Accept-Language ,可以包含多种语言,使用逗号分开。每个标识有两个基于ISO-639的字符代码。例如en 代表English,no 代表 Norwegian等等。想了解更多关于 Accept-Language 请参考 HTTP 1.1 Reference,section 14.4。所有的语言代码可以查阅ISO-639。
    下面的PHP代码显示了如何读取Accept-Language 头,并选择语言。这段代码很容易就能转成其他代码,其基本原理就是读取Accept-Language 中的前两个字符,然后依据这两个字符选择语言。
<wml>
  <card id="loc" title="Localized Text">
    <p>
    <?
      switch(substr($HTTP_ACCEPT_LANGUAGE,0,2)) {
        case "en":
          echo("Your WAP device is configured for English language");
          break;
        case "no":
          echo("Din WAP-dings er konfigurert for Norsk spr錵");
          break;
        case "sv":
          echo("Din WAP-sak 鋜 konfigurerad f鰎 Svensk spr錵");
          break;
        default:
          echo("I have no idea what language your WAP device is using..");
      }
    ?>
    </p>
  </card>
</wml> 
7. 每个WAP设备的浏览器的功能和限制是怎么样的?
    所有的设备都应该遵循WAP协议,当前是WAP 1.1和WAP 1.2,但是真实的世界不是那么简单。随着WAP的进化,WAP设备开发者将尝试推动WAP协议的封版。这就让开发者的生活更加有意思,但是同样也保证了技术快速的发展。
    许多设备都无法完全遵循协议,虽然在许多情况下这种差别不是很大。同样有些设备还增加了一些WAP开发者需要的特别功能。
    有关协议的最好资源是在 AnyWhereYouGo。你会发现它有关于WAP设备的列表非常有用。如果用户发现某些特殊的设备,也请将数据加入到 AnyWhereYouGo 的数据库当中。
8. 不同的的电话应该使用哪个UP.browser版本?
    Phone.com Developer站点有这样一个列表 。但是必须注册后才能得到这个列表。
9. 在哪儿可以下载Microsoft的Mobile Explorer?
    现在知道的只有Benefon Q和Sony CMD-Z5使用 Microsoft Mobile Explorer。但是在Sony的站点只有一个简单的Flash。Benefon 的支持要好的多,可以去他们的开发区看看。
    Microsoft Mobile Explorer 可以在注册之后下载。
10. Microsoft Mobile Explorer有什么特别的地方?
    Microsoft Mobile Explorer或者MME是一种双模式的浏览器,他可以接受HTML和WML代码。这就产生了一个新的问题:当内容既可以使用HTML也可以使用WML的时候,如何选择呢?其实这个已经不是新问题,像Opera浏览器基本上是一个HTML浏览器但是支持WML。但是MME没有将数据类型使用正确的顺序。例如HTML比WML优先。如果浏览器检测代码是没有问题的,就应该没有问题。
    经过对MME模拟器长时间的测试,笔者发现每个人都在使用错误的浏览器检测代码。许多看起来可信的事实:“Mozilla”意味着是HTML浏览器,例如:Netscape或者Internet Explore。其实有很多HTML浏览器不使用“Mozilla”来表示。相反它们询问浏览器可接受的数据类型。另外MME模拟器不支持文本的WML,只支持编译后的WML(WMLC),它需要一个(象其他的WAP设备)网关来将WML转换成WMLC。
    MME同样支持JPEG和GIF格式和WBMP。另外,MME发送HTTP头中有一个 HTTP-DISPLAY-AREA 来告诉内容提供服务器的屏幕大小。
    MME通过User Agent来表示自己为Mozilla/1.22兼容的设备。完整的MME模拟器字符串是:Mozilla/1.22 (compatible;MMEF20;CellPhone)。
    当使用MME模拟器,记住它有两种工作模式。它直接告诉内容服务器,要么接收HTML,要么接收编码的WMLC。如果想直接使用文本WML,用户必须告诉MME网关的位置。在这个模式下所有的WAP请求通过WAP网关来处理,然后MME才能接收文本WML。
11. 能不能在浏览器中改变字体?
在很多情况下是不行的。许多浏览器支持标签来改变字体的为黑体、斜体或者大小。但是字体的类型是不会改变的。到现在还没有看到这样的浏览器出现,也没有这样的WML标签出现。
    但是Morpheme却做到了一种在线的办法来改变字体,叫做 “Dwbmp” ,这实际上是使用文本书写的方式来制作和使用WBMP图片。这个工具是免费的,现在它支持六种不同的字体。
    另外只有少数的设备支持图像anchors(例如:Nokia 7110),因此不能使得WBMP像文本一样可以链接。
    对于那些使用 PHP 或者其他服务器端脚本语言的可以使用GD来支持,将TrueType字体甚至是Postscript转换成WBMP。

八、关于WAP手机的常见问答
1. 怎样配置手机才能浏览到Internet?
    一般来说您可以先参考手机的使用说明书来进行配置。在手机配置当中有几种典型的WAP手机配置的详细说明。
2. 市场上有哪些WAP手机?
    目前有Nokia 7110,Ericsson R320,Motorolar L2000www等等。随着时间的推移会有大量的新款WAP手机推出。一般来说大屏幕,高分辨率并且具有中文显示和输入的WAP手机在浏览WML网页的时候效果比较好。
3. 是不是所有的手机都能执行WAP1.1的标准,还是各有各的特性?
    所有的WAP手机应当支持WAP 1.1,但是有些手机有自己不在WAP协议之内的特点。
4. 国内有这样的手机卖了吗?
    国内市场上已经有很多种WAP手机。但是国内还没有生产WAP手机。
5. 这样的手机大概需要多少钱?
    这样的一部手机一般在2000元左右。为了使更多的人加入到WAP中来,以后手机还要降价。
6. 若WAP手机要上网,需要申请那些服务?
    如果要用WAP手机上网,首先必需开通一般的通话服务、短消息服务、数据服务。当以上服务都申请好后,再进行上网设置密码。
7. 如何使用WAP服务?
    首先,必须要有WAP手机,如Nokia 7110、Ericsson R320等型号;其次,必须向电信业者申请WAP服务。(目前国内开户费200元,月租50元)。
8. 如何在Nokia 7110里面输入URL?
    “/”符号可以通过按“*”,其他符号可以滚动到与其配的符号找到。
9. 在哪儿可以得到现有的WAP支持设备?
    AnywhereYouGo.com 有一个完整的WAP设备列表。
    http://www.anywhereyougo.com/wap/devices/Index.po
10. 在购买WAP手机之前应当考虑哪些问题?
    在考虑购买WAP手机之前应该考虑以下问题:在现在的市场上只有几种类型,例如:流行的Nokia 7110和Ericsson R320;既然WAP是新技术,其产品肯定还不是很成熟(可能会有Bug);电话不可能支持所有的WAP 1.1功能;WTA功能目前还不支持。
11. 浏览WAP站点的时候还能接收或者拨打电话吗?
    当然。数据和声音使用不同的线,并且你在浏览的时候无须担心来电。对于拨号,请检查7110的“User Number”功能。
12. 移动电话上网时是按照时间收费还是按照流量收费?
    这要看移动电话基于CSD还是SMS信道。使用SMS信道,只需要为传输的数据付费,如果你使用的是CSD信道,则需要按照时间付费。
13. 为什么需要指定拨号号码和WAP网关?
    电话号码是拨号到ISP上所使用的电话号码,IP地址是指定网关。如果没有指定网关,WAP设备将无法连接到Internet网络。
14. 可以通过改变7110的设置来发送SMS短消息吗?
    可以。可以通过设置一个叫做OTA (Over The Air)来发送SMS 短消息。
15. Nokia 7110的上下文Cache是多大?
    大约是40 k。
16. Nokia 7110的操作系统可以升级到v04.77吗?
    是的。7110的系统可以升级,但只能在Nokia的服务点做到。这可能删除你现有的电话本。
17. 无法在7110上显示表格数据什么问题?
    Nokia 7110不支持多列的表格,因此你要把任何表格转换成单列的表格。
18. 有没有一个WAP电话和设备的列表?
    注意这里的列表是目前的状态。里面有些信息不一定正确。
    AnyWhereYouGo 有一个很好的WAP设备列表(见表10-9),包括phones和 PDAs。(许多信息都直接来自制造商)
表10-9 WAP设备列表
Alcatel One Touch View db WAP Phone  
http://www.alcatel.com/consumer/mobilephone/view_dbwap.htm
Alcatel One Touch 30x Series Phone 预计2000年9月
http://www.alcatel.com/consumer/mobilephone/
Alcatel One Touch 50x Series Phone 预计在2000年10月
http://www.alcatel.com/consumer/mobilephone/
Alcatel One Touch 70x Series Phone 预计在2000年11月
http://www.alcatel.com/consumer/mobilephone/
Alcatel Onetouch View Phone  
http://www.alcatel.com/telecom/mbd/products/products/detailed/gsm/ot_view/index.htm
Siemens S35i Phone  
http://www.siemens.com/mysiemens/english/mobile/index.html
Siemens M35i Phone  
http://www.siemens.com/mysiemens/english/mobile/index.html
Siemens C35i Phone  
http://www.siemens.com/mysiemens/english/mobile/index.html
Siemens S25 Phone 只支持HDML
http://www.siemens.se/telefoner/mobiltelefoner/s25/
Sony CMD-Z5 Phone 支持WML和HTML
http://www.sony-europe.com/com/z5/index.html
Nokia 7110 Phone  
http://www.nokia.com/phones/7110/index.html
Nokia 6210 Phone  
http://www.nokia.com/phones/6210/index.html
Nokia 6250 Phone 还没有投放市场
http://www.nokia.com/phones/6250/index.html
Nokia 6185 Phone 只在美国市场上有
http://www.nokiausa.com/beauty/1,1002,28,FF.html
Motorola Leap P7389 Phone  
http://www.motorola.com
Motorola Timeport Phone  
http://www.motorola.com
Motorola Talkabout Phone  
http://www.motorola.com
Motorola i1000plus Phone 只适用于iDEN
http://www.motorola.com
Motorola i500plus Phone 只适用于iDEN
http://www.motorola.com
Ericsson MC218 Palmtop  
http://www.ericsson.se/WAP/products/mc_218.shtml
Ericsson R380 Phone  
http://www.ericsson.se/WAP/products/r380.shtml
Ericsson R320 Phone  
http://www.ericsson.se/pressroom/r320a.html
3Com Palm Pilot Palmtop 需要浏览器软件
http://www.palmpilot.com/
Neopoint 1000 Phone  
http://www.neopoint.com/products/index.asp
Neopoint 1600 Phone  
http://www.neopoint.com/products1600/index.asp
Sagem MC850 Phone 还没有投放市场
http://www.phone.com/news/Archive1999/031899_SAGEM.html
Samsung Duette SH-P10 Phone 只适用于CDMA
http://www.phone.com/solutions/alliances/samsung.html
Samsung SGH-800 Phone 还没有上市
http://www.phone.com/solutions/alliances/samsung.html
Mitsubishi T250 Phone 只适用于CDMA
http://www.mobileaccessphone.com/products/index.htm
Compaq Aero PDA WindowsCE WAP1.1 微型浏览器
http://www.compaq.com/products/handhelds/
Qualcomm QCP-860 Phone 只适用于CDMA
http://www.qualcomm.com/cda/technology/display/0,1595,,00.html
Qualcomm QCP-1960 Phone 只适用于CDMA
http://www.qualcomm.com/cda/technology/display/0,1595,,00.html
Qualcomm QCP-2700 Phone 只适用于CDMA
http://www.qualcomm.com/cda/technology/display/0,1595,,00.html
Qualcomm QCP-2760 Phone 只适用于CDMA
http://www.qualcomm.com/cda/technology/display/0,1595,,00.html

九、关于WAP安全的常见问答
1. WAP提供怎样的安全性?
    WAP 1.1支持无线传输安全协议(Wireless Transport Layer Security)。WTSL和Internet的SSL类似,具有许多重要的加密功能,但在客户端只需要较低的运行能力。
    WAP网关能从网上接收SSL加密的消息并把这些消息转换成WTSL加密的信息传给移动设备,这种转换消耗的时间按毫秒计算。WAP网关的主要作用就是在两种协议之间建立一个虚拟的安全转换连接。
    移动设备和服务器之间存在有两个安全问题:一个是从移动设备到网关;另一个是从网关到服务器。WTSL是保证前者的安全通讯,SSL是保证后者的安全通讯。如果移动设备使用了不具有加密功能的SIM卡,即使在URL中申请使用SSL接口,在从移动设备到网关的过程中URL的申请仍然是显式的,也就是说是不安全的,窃听者可以通过截获空间散发的无线电波来窃取用户的口令和密码。
2. 通过WAP的传输安全吗?
    当然。在移动电话和WAP网关之间使用WTLS(Wireless Transport Layer Security),网关和Web Server之间使用SSL(Secured Sockets Layer)就可以。
3. WAP如何同SSL与WTLS工作?
    SSL(Secure Sockets Layer)在“web”中广泛用来在浏览器和服务器之间加密数据流。这同样也适用于WAP环境,但是SSL只用在Web Server和WAP网关之间。在WAP网关和WAP设备之间,有一个类似系统叫做WTLS( Wireless Transaction Layer Security)。WTLS是专门适合于无线环境的。
    安全是一个非常敏感的问题,虽然没有任何一个系统是绝对安全的,但笔者认为SSL和WTSL对于很多应用是足够安全的。这两个协议在WAP网关中相互转换。
    SSL并不直接兼容WTLS,因此WAP网关要解密从Web Server过来的SSL保护数据流,然后使用WTLS加密发送给WAP设备。在WAP网关中,数据是没有保护的。
    模型如下:
                |                              |
  [WAP device]------------[WAP gateway]-----------[Content server]
              <---WTLS--->{unprotected}<---SLL--->
                 |                              |
     (Firewall) |                              | (Firewall)
 
    想象一下如果银行或者其他机构使用公开的WAP设备,处理一些敏感的数据。当数据离开用户的系统和网络的时候,它们是受到保护的。但是在进入WAP网关之后(网关是由第三方操纵的,例如:移动营运商)数据被解密。虽不能说所有的移动营运商都是危险的,但是将敏感数据暴露给不知道的第三方是很不让人放心的。任何一个营运商的问题将是所有营运商的问题。
    主要的WAP公司都在开发一种称做“WAP Server”或者是具有WAP网关的Web服务器来解决端到端的问题。因为数据离开服务器(“WAP Server”)的时候就已经是WTLS加密。
    模型如下:
                |                             |
  [WAP device]------------------------------------["WAP server" (acting as WAP gateway)]
              <---------------WTLS--------------->
                 |                             |
      (Firewall) |                             | (Firewall)
    这样WAP网关就不再是整个过程中的一个环节。那么用户必须重新配置它们的WAP设备来指向“WAP Server”来建立相应WAP会话。当用户想访问其他地方的时候,又必须配置来指向其他的网关。虽然有的WAP设备比较好配置,但是有些却非常困难,这多少有点烦人。
    除了以上的问题,实际上许多移动营运商将端到端的服务器放在用户拨号到Internet的地方。他们的WAP网关具有同样的私有的IP地址,通常是在一个防火墙后面。这个防火墙通常只允许使用HTTP协议的80端口。WAP网关使用这个端口来接受从内容服务器来的数据,那也是他的真正需求。当WAP设备试图访问其他的网关的时候,那么防火墙就将停止他们的操作,要么因为是WAP设备IP是不允许在Internet上访问其他的设备,要么是无法打开所需求的端口。这样移动营运商就有效地阻止了用户使用其他的网关。
    有一些关于WAP安全方面的内容,请看:
Wapforum's WTLS 协议
Baltimore Telepathy安全讲解
Tantau关于安全的文章:《An Introduction to WML Programming and Third-Party WAP Toolkits》
Phone.com关于无线安全的文章:《Understanding Security on the Wireless Internet》

十、关于WAP其他方面问答
1. 在哪儿可以下载Phone.com的UP.SDK?
    Phone.com的UP.SDK可以在注册之后下载。
2. 如何在Win2000上安装Nokia SDK?
    Johannes Herbst (johannes_herbst@bwc.at)提供了一个快捷的方法来解决Win2000的安装问题。
从Win2000的安装光盘安装Win2000的支持工具(/support/tools/setup.exe);
找到一个叫做APCOMPAT.EXE的文件;
启动APCOMPAT并设置OS-version为 NT4 SP3 并运行;
启动Nokia SDK 安装文件;
在解包以后,程序将挂起很长一段时间;
从Win2000的Task Manager中强制结束 setup进程;
    Nokia SDK setup 将正常继续。
3. 哪儿能下载Nokia SDK?
    Nokia SDK v.2.18是一个非常好的7110模拟器,但是Nokia对它采取了相当的保密措施。其他的设备厂家,Phone.com和Benefon 只要简单的注册就可以得到。Nokia只允许开发者使用Nokia Toolkits,而这些版本很难和WAP环境搭配。
    Nokia WAP SDK很难找到,每次找到了,它就消失了。
    当前笔者知道它在:http://www.bwl.uni-mannheim.de/~broeker/software.htm。
4. Nokia SDK的基本验证是怎么回事?
    基本验证好像是后加入到软件中的,并没有考虑将WAP模拟器和工具包形成产品。基本验证已经肯定要加入到真正的 Nokia 7110 以及防火墙软件4.73或者更高。
5. 除了使用Nokia WAP Toolkit 模拟器还有其他工具吗?
    Nokia Toolkits模拟器的模拟效果与真的Nokia 7110相差较大。应该使用 Nokia SDK 2。最新的版本是 v.2.18。这个SDK包含了最好的7110模拟器和其他一些有用的工具和一些真实的例子
6. 为什么Nokia 7110不能POST超过160个字符?
    有一些版本的Nokia 7110浏览器不能POST超过160个字符的变量。在实际中,似乎有一个内容长度的限制,大约在170~180之间。从另外的角度来说,变量的名字和它们的内容算在一起。如果只POST一个叫做“A”的变量,那么这个变量只能包含大约160个字符的内容。如果有好几个变量,如有一个名字叫做 “thisishenameofaverylongvariable”的变量,那么包含的内容将更少。
    但是有一个解决方案,那就是要求电话重新配置。在Connection Settings 菜单,找到一个叫做Connetion type,把它设置为Continous ,那么将发送更大的变量内容。
    如果想知道GET或者POST能发送多大的内容,请看有关GET和POST的FAQ。
7. 运行Nokia Toolkit需要安装什么版本的Java包?
只需要Java 1.2环境。如果想运行100%纯的环境,例如在Linux下,还需要一个Java XML 解释器。

十一、关于WAP站点建设的常见问答
1. WAP网站需要那些硬件设施?
    如果仅仅是想作为WAP服务提供商,那么WAP的硬件设施和WWW服务的硬件设施完全一样,只需要对以前的WWW做适当的配置就可以应用于WAP服务。当然,也可以去购买专门的WAP Server。专用的WAP服务器可以集成许多其他功能模块,例如:WAP安全性、PUSH功能等。
2. WAP的安全性如何?
    WAP堆栈中的一层,称为WTLS,提供加密和效验的服务-客户端安全。这个防止了网络上的舞弊,为电子商务和Interanet开通了道路。
3. 应该如何配置自己的Web服务器使它能够支持WAP?
在服务器端加入以下配置:
.WML text/vnd.wap.wml
.WMLC pplication/vnd.wap.wmlc
.WMLS text/vnd.wap.wmlscript
.WMLSC application/vnd.wap.wmlscriptc
.WBMP image/vnd.wap.wbmp
4. 要为WAP设备提供WML内容应当做些什么?
    最简单的提供WML内容的方法是使用一个好的HTTP服务器,笔者推荐Apache。如果想生成动态的内容,笔者推荐一个叫做PHP的服务端脚本语言。这样既能够书写服务端的HTTP程序适合HTML浏览器,也能够书写WAP程序适合WML浏览器。
    只有WAP站点能够连接到移动网络的提供商,用户才可能在手机上通过输入URL来访问它。既然www已经变成一个标准的名字,wap好象也在变成一个标准。例如:“wap.domain.com”。
    一个非常重要的事情就是要记住让HTTP服务器告诉WML浏览器,它接收到的是一个WML页面,而不是一个HTML页面,这个可以通过配置MIME来完成。
5. 如何配置现有的Apache 1.3.9 Web服务器使它能提供WML服务?
    需要配置正确的MIME类型。
    text/vnd.WAP.WML WML
    text/vnd.WAP.WMLscript WMLs
    image/vnd.WAP.WBMP WBMP
    application/vnd.WAP.WMLc WMLc
    application/vnd.WAP.WMLscriptc WMLsc
6. 如何在PWS 4下加入MIME类型?
    可以通过“Windows Explorer->Folders Option->File Types->New Type;” 直接增加可选择的mime.type文件。
    对于PWS,还可修改注册表,先在:HKEY_CLASSES_ROOT层加入主键 .wml,再加入串值Content Type为text/vnd.wap.wml,然后在HKEY_LOCAL_MACHINE/Software/CLASSES/MIME/Database/Content Type/中加入主键 text/vnd.wap.wml,再加入串值Extension为.wml。
7. 有哪些HTTP的相关MIME类型?
    当使用基于PC机的浏览器操作一个“web page”的时候。“web server”告诉用户的PC浏览器将接收到一个怎么样的文件类。这个经常被称做文件映射:MIME。最常见的MIME类型是普通的HTML文件,叫做“text/html”。但是对于WAP微型浏览器,它不能浏览HTML页面,MIME的类型也不同。
    服务于WML的MIME类型见表10-6
表10-6 MIME类型
 
文件类型 MIME类型 扩展名
Plain WML documents text/vnd.wap.wml .wml
Wireless Bitmap Images image/vnd.wap.wbmp .wbmp
Compiled WML documents application/vnd.wap.wmlc .wmlc
WMLScripts text/vnd.wap.wmlscript .wmls
Compiled WML Scripts application/vnd.wap.wmlscriptc .wmlsc
    为了将MIME类型加入到Apache HTTP 服务,可以按照下面步骤操作:
    (1)编辑srm.conf文件(通常在/etc/httpd/conf)。
    (2)定位在AddType区域,加入以下内容:
# MIME Types for WAP

AddType text/vnd.wap.wml .wml
AddType image/vnd.wap.wbmp .wbmp
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlscriptc .wmlsc。
    (3) 保存文件并重新启动Apache HTTPd。
    如果你没有控制整个Apache服务器的权限,例如用户在一个ISP下面,可以加入一个叫做 .htaccess文件到每个放置WML页面的目录。当服务器从这个目录读文件的时候。它将根据 .htaccess 文件的规则输出。
    一个典型的 .htaccess 看起来如下:
DirectoryIndex  index.wml
addtype text/vnd.wap.wml wml
addtype application/vnd.wap.wmlc wmlc
addtype text/vnd.wap.wmlscript wmls
addtype application/vnd.wap.wmlscriptc wmlsc
addtype image/vnd.wap.wbmp wbmp 
    注意告诉服务器,index文件是index.wml。 同样要注意到服务器能够阅读这些文件。在某些情况下服务器由于安全问题而忽略这些文件。因此这些要同ISP协商。(增加MIME类型到Microsoft IIS server,也可以在WAP中的其他部分)。关于其他服务器,请参看它们的文档。
8. 如何使用Nokia 7110取得自己PC上的站点?需要本地的移动商提供WAP服务吗?
需要其他设备例如Modem吗?在哪儿能够访问自己PC上的WML页面?
    使用自己的手机看WAP站点,要按照以下步骤进行:
    安装一个Web Server(例如IIS 4.0)并且将WML应用放在一个虚拟目录中,将PC连接到Internet。注意机器的IP地址(当你使用拨号的时候,每次的IP地址可能不同)。只需要网络营运商提供数据连接。
    使用WAP电话,例如Nokia 7110或者Ericsson R320。拨号到ISP。记住自己的PC已经拨号到ISP。有的ISP只允许一次一个连接,有的允许多个。这个要根据实际情况来确定。
    输入机器的IP地址和虚拟目录的名字,例如:
        http://x.x.x.x/virtual_path/somepage.WML
    使用一个公共的网关的IP地址,例如:Ericsson。
    现在就可以拨号,并激活以上设置。
9. 如何使用WinNT 4.0上的RAS Server与Nokia 7110相连接?
    需要一个WAP网关,并且在自己的服务器上配置MIME类型。将网关设置成Web Server,再使用电话拨号就连接上了。(这要求必须有一个配置好的RAS帐号。)
10. 有一个需要Login 的WAP站点,有没有办法避免每次让用户重复输入用户名/密码?
可以使用电话的SIM卡来确认用户吗?
    现在还不可能通过WAP在SIM卡中保存数据,也不能使用电话号码来确认用户。从安全的角度来讲,也必须让用户输入用户名和密码,提交后标记结果页给用户这样一个URL标签:http://www.website.com/login.asp?user=bill&pass=secret
11. 已经有一个Web站点,如何建立一个WAP站点?
    首先要明白这个文件是给那些的确已经拥有Web站点的公司,而现在想转到WAP上来。不是指那些开发者或者普通的用户。强力推荐《Making existing web content available to the mobile Internet》。文章在:wap.com。
12. 如何绕过营运商,直接连接到Internet?
    如果认为一个营运商不允许访问其他的WAP资源,或者用户只是由于开发目的想绕过营运商,有很多WAP设备可以让做到这一点。
    不同的WAP设备有不同的工作方式,但是你应该能勾勒出整个框架。
    首先需要一个本地的Internet Service Provider的电话号码。它使你能够通过普通的拨号连接到Internet。其实许多ISPs提供很多免费的拨号连接。ISP不一定是本地的,要有给移动营运商付费的准备。ISP需要支持PPP协议,可以使用userid和password同ISP建立连接,然后需要一个公共网关(见表10-7)的IP地址。
表10-7 一些公共网关
提供商 IP地址 网关类型
Ericsson http://www.ericsson.com/ 195.58.110.201 Ericsson
wapHQ http://www.waphq.co.uk/ 212.1.130.132 wapHQ Gateway
    用户要使用电话号码、useri、password和IP地址配置自己WAP设备。以Nokia 7110 为例,在Services, Settings, Connection Settings中进行配置。Nokia 7110 使用SMS信道作为缺省的,需要将它改为 Data ,同样要设置 Data Call Type 和 Connection Types。 对于Data Call Type 需要选择ISDN并测试。对于Connection Type 你可能选择Temporary 并再次需要试验。最后设置Home Page 指向某个你知道的 WAP 设备。你就可以拨号访问自己的WAP设备了。
13. 能不能建立一个WAP站点,但不使用真正的WAP设备?
    WML内容可以被任何微型浏览器或者用户代理所理解。因为内容都是为WAP设备所写的,所以最好的阅读WML内容的方式可能是使用一个WAP设备模拟器。但是这些应用程序都很大,而且需要其他的运行环境。
    表10-8列出了一些浏览器的模拟器和相关的信息。
表10-8 浏览器的列表
浏览器 环境
WAPJAG.DE
http://www.wapjag.de Internet Explorer
AU Systems WAP Browser
http://www.wapguide.com/wapguide/browser.html PalmOS 3.3
WinWAP
http://www.slobtrot.com/winwap/index.htm Windows9x/NT
Wapalizer
http://www.gelon.net/ Internet Explorer/Netscape
Fetchpage
http://webcab.de/fetchpage.htm Any HTML browser
WAPman
http://www.wap.com.sg/downloads/downloads.htm Windows9x/NT
WAPman
http://www.wap.com.sg/downloads/downloads.htm PalmOS 3.1
Nokia WAP Toolkit 2.0 Beta
http://www.forum.nokia.com/wapforum/main/1,6668,1_1_30_2_3,00.html Windows9x/NT+Java
Phone.com UP.SDK
http://developer.phone.com/ Windows 9x/NT
Ericsson R380 Emulator
http://www.symbian.com/epoc/r380wapemulator.html Windows NT 4.0
Nokia SDK 2.18
http://wap.colorline.no/wap-faq/index.html?pair=06.001 Windows9x/NT
Wappy’s Wapview
http://wappy.to/ Internet Explorer/Netscape
Opera 4.0
http://www.opera.no/ Standalone kick-ass browser
EzWAP
http://www.ezos.com/Soft/EzWAP/EzWap.asp Windows NT, 2000, CE and Pocket PC

14. 想建立自己的WAP营运服务该怎么做?
    建立自己的WAP拨号服务系统是很简单的,在市场上有很多这种解决方案,从高端的Cisco Access Servers (AS5200)到低端的基于Microsoft NT Remote Access Service和Novell's Netware Connect的软件解决方案。
    这也许要花费很多力气来解释如何安装和配置这些系统。但是这些的确都与WAP无关。一个WAP设备只是从电脑上通过Point-to-Point Protocol (PPP)取得一个IP地址。
    如果已经有了一台装有Microsoft NT 4.0 和9600 bits/s 的Modem。那么就可以直接建立一个简单的系统。请看Fergal Moran(962264N@knotes.kodak.com)的《Configuring your NT server to accept remote connections》
    把这些设置移植到其他系统应该没有问题。只要能拨号到Windows98 Dialup-Networking,就可以拨号到WAP设备。
    注意WAP设备对IP的配置。现在需要建立自己的内部WAP网关和HTTP服务器。或者只是使用公开的WAP网关或者HTTP服务器。
15. 如何注册一个WAP域名?
    其实WAP域名和Web域名没有什么区别。如果你有一个Web站点,你同样有一个将该站点挂在Internet上的Internet Provider。最常见的Web站点是www或者www.mydomain.com,典型的WAP站点名是 wap.mydomain.com。
    当域名已经通过Internet Provider或者在其他公司注册之后。(例如:Network Solutions ,你注册了一个mydomain.com)。一个Domain Name Server(DNS)需要指定一系列在这个域名下的一系列的主机名字和地址。DNS只是简单的将人们可读懂的文本地址转换成IP地址。如果有一个Web站点,将至少有一个主机叫做www,它指向IP地址。当某个人想访问站点的时候,DNS将被询问:“具有域名是www.mydomain.com的主机IP地址是多少?”,然后DNS回答IP地址,例如:“193.143.2.90”。然后请求者使用这个IP地址来操作站点。
    为了将WAP主机加入到域中,只需要在DNS主机中增加一个叫做wap的主机。任何请求wap.mydomain.com 将接收到WAP主机的IP地址。
    WAP主机可以和Web主机拥有同样的IP地址。那就意味着该主机既提供Web内容也提供WAP内容。因为Web浏览器接收HTML,WAP浏览器接收WML,Web服务器可以通过简单的脚本来判断浏览器的类型,并提供适当的内容。因为www.mydomain.com 和wap.mydomain.com 主机的名字都指向同一个IP地址,所以WAP用户可以操作www.mydomain.com,Web用户也可以操作wap.mydomain.com。毕竟文本主机名字是机器IP地址的代表。
    如果一个服务器为Web内容,另外一个为WAP内容,就需要使用Web名(www.mydomain.com)指向Web Server,使用WAP名(wap.mydomain.com)指向WAP内容服务器。

 

相关文章推荐

WAP常见问题问答大全

  • 2010年06月26日 21:41
  • 455KB
  • 下载

wap常见问题问答大全

  • 2009年05月13日 19:32
  • 895KB
  • 下载

Wap常见问题

1. 开发WAP软件需要哪些工具? 为了开发WAP应用程序,需要一个WAP网关(注意:这里的网关可能是指支持WML的服务器。可以通过配置WWW服务器达到这个目的)和WAP工具包。工具包应当包括模拟器...

WAP常见问题问答大全

  • 2010年11月02日 09:08
  • 38KB
  • 下载

6RA70常见问题问答

  • 2015年09月03日 08:52
  • 27KB
  • 下载

笔试面试常见问题问答

1、什么是线程安全?   如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安...

网站地图sitemap使用常见问题问答

  • 2013年05月05日 21:14
  • 104KB
  • 下载

网站备案常见问题问答

  • 2012年01月06日 15:51
  • 27KB
  • 下载

百度sitemap网站地图使用常见问题问答

Sitemap(即站点地图)就是您网站上各网页的列表。创建并提交Sitemap有助于百度发现并了解您网站上的所有网页,包括百度通过传统抓取方式可能找不到的网页。您还可以使用Sitemap提供有关您网站...
  • janelin
  • janelin
  • 2013年02月03日 11:24
  • 2086

Thinkpad常见问题问答

  • 2011年12月16日 10:39
  • 284KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WAP常见问题问答大全(2)
举报原因:
原因补充:

(最多只允许输入30个字)