还剩80页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
WAP常见问题问答大全目录
一、关于WAP的常见问答
二、关于WML的常见问答
三、关于WAP__的常见问答
四、关于WMLScript的常见问答
五、关于WBMP的常见问答
六、关于WAP__的常见问答
七、关于WAP浏览器的常见问答
八、关于WAP__的常见问答
九、关于WAP安全的常见问答
十、关于WAP其他方面问答
十一、关于WAP站点建设的常见问答
一、关于WAP的常见问答
1.简单的说WAP代表什么? WAP代表“WirelessApplicationProtocol”WAP标准也就是无线应用协议(WirelessApplicationProtocol)它的作用就是使____和其他无线设备能够访问各种服务和信息,特别是Internet上的服务与信息
2.什么是WAP? WAP是WirelessApplicationProtocol的首字母缩写其定义来自于无线工业界,例如Nokia和Ericsson它基于现有的Internet技术,例如XML和IP,主要是为无线用户(WAP设备,例如____)提供Internet上的应用和服务 WAP不是简单的一个协议,它由许多协议组成的,涵盖了从WAP设备到用户代理以及传输协议与G__信道的各个方面许多站点都有关于WAP的信息,具有权威的资料一般来自于WAPForum但是从WAPForum来的信息非常专业,技术性强,因此对于新手来说是很困难的虽然WAP目前还处在刚刚诞生的婴儿阶段,看起来的确有很多不尽人意的地方,但是随着无线通讯工具的普及、网络技术日益成熟、生产商和网络服务商的不断进步,WAP一定会实现现在人们使用IE等浏览器上网冲浪一样的快捷、愉悦,并且更能享受随时随地想上就上的轻松自在
3.谁发展了WAP WAP是由一个名叫“WAP__”的公开__发展的这个讨论组的主要职责是制定WAP的标准和规范该讨论组的网址为___.wapforum.com
4.WAP__有哪些公司加盟? 几乎所有的大型通讯公司、无线网络设备提供商,手持设备制造商和软件__商等等都是WAP讨论组的成员
5.___要投资WAP WAP允许持有支持该协议的__设备访问信息和事务服务,例如饭店和旅馆信息、证券交易、银行服务、目录服务、外汇牌价、__时刻表、火车和汽车时刻表等等基于WAP的设备是全球化的,易于使用,并且具有很高的安全级别它兼容现有的应用程序和IT系统 预测到2003年,将通过____连接到Internet网络的人将超过使用PC机连接的人策略分析学家认为,将有超过
5.25亿部WAP__投放市场 通过交叉的合作,WAP提供了许多潜在的重要商机它将开辟新的服务方式和新的服务渠道拥有WAP合作伙伴的公司将能够为他们的客户随时随地提供服务 WAP将允许合作伙伴使用现有的所有协议或载体为用户服务最重要的就是通过一个统一的途径来访问全球的用户 面对这样广阔的前景,当然有理由投资WAP了
6.什么服务可以利用__的优点? __服务当然比经典的Web服务更适合于__的Internet这些应用正在合并,正像冰山一点点地融化 以下的应用是其中的一个例子,这个应用将从__网络受益非浅(被称作“应用杀手”) 定位服务(LocationBasedServi__s) 总的来说定位服务为用户提供全球定位服务,并且还能提供和位置相关的各种信息在不久的将来,__设备将能够告诉Web服务器特定的用户在哪儿当然也可以采取直接向用户询问他们的位置,然而用户的回答描述往往是不准确的 一个简单的例子就是显示一个城市的公共交通假设某人想到某个站下车去参加一个会议因为公共汽车可能会误点,他需要知道公共汽车上次离停的时间,或者知道它到底晚点多少 在公共汽车站点一般都有一个时间表,还有一个唯一的标识他可以访问公共交通的Web站点,输入必要的信息后,Web服务器就可以告诉他到底在什么地方,并且可以显示最近的公共汽车站点虽然现在的公共汽车、火车等交通工具还没有GPS,但是相信总有办法得到位置的精确信息总的来说,系统可以不用等到新技术的出现就能得到相关的服务 当技术成熟到可以自动得到用户地理位置的时候,一个好的基于位置的服务将可以提供一个城市停车服务例如不需要停车灭表,用户拥有一个设备和唯一的号码当他想停车的时候,只要简单地告诉系统他想停在什么地方、停多久当离停车结束只有5分钟的时候,系统将使用__S系统告诉他的停车时间快到了,他必须开车离开或者再付钱同时,这个系统还可以自动地通知用户哪里有停车位置,哪里发生了交通堵塞并提出智能化的建议
7.在中国能得到WAP__吗? 能现在有很多厂家都生产WAP__并且在中国销售例如Ericsson,Mitsubishi,Neopoint,Samsung,Ericsson
8.WAP可以在GPRS上运行吗 可以GPRS是一种新的无线服务方式它将使WAP的传输比在现在的__S或者CSD要快
9.在G__中WAP使用什么信道? 在G__中,WAP可以使用ShortMessageServi__(__S)信道或者CircuitSwitchedData(CSD)信道,后者的带宽比较大
10.WAP可以在什么样类型的网络上运行? WAP是为了可以在多种网络环境中运行而设计的包括G__、PDC、CDPD、CD__、TD__、PHS和DECT,还包括将来的3G
11.WAP设备是如何连接到Internet上的? 一个普通的WAP应用的场景如图10-1所示图10-1普通的WAP应用 在上图中,从左边开始,__网络(G__、CDDA等)中的__WAP设备,通过拨号连接到接入服务器(RAS,或者远程控制服务器)的Modem上这个服务器使得WAP设备可以使用协议来工作有一些如同InternetServi__Provider将提供给用户底层协议,被称作为PPP(Point-to-Point)协议这个协议是用在整个WAP链中的下一个环节设备——由__营运商提供的WAP____连接无线和“Web”世界,基本上是使得WAP设备能够操作普通的Internet 更详细地说,当用户在WAP设备上输入URL的时候,例如http://wap.colorline.no/WAP设备首先检查用户的连接设备是否已经打开如果没有就拨号到如上面所描述的PPP提供者在PPP提供者已经给WAP所需要的协议和指定的IP地址之后,请求的URL将发送给__(WAP__)在WAP设备请求的URL的“控制”下,发出一个普通的HTTP请求(例如GEThttp://wap.colorline.no)给Internet在Internet那边有一个普通的Web服务器,里面装有WAP和Web的内容,现在接收到了从WAP__过来的HTTP请求这个Web服务器通过判断浏览器的类型(WAP或者Web)来发送相应的内容给浏览器接着请求的内容发送到WAP设备因为一个WAP设备的WML浏览器只能读懂二进制的WML,所以如果这些请求的内容是文本的WML编码,WAP__就进行编译工作,将WML编译成二进制的WML,也就是设备可以读懂的WMLC(一些经过压缩的二进制代码),并把这些二进制代码发送到WAP设备;如果内容已经是二进制的WML格式,WAP__将跳过这个操作这就是___转换文本WML到二进制WML减小了带宽的缘故最后,当WAP设备的WML浏览器接收到二进制的WML代码,浏览器就显示其内容在WAP设备上供用户使用 这是一种WAP设备连接到Internet的主要方式 当WAP设备使用的是公共的WAP__,而不是__营运商提供的__的时候,只需要简单地将WAP____到Internet上需要说明的是这不是普通的WAP设备的配置在放置的时候,可能要遇到一些问题,图10-2说明了这个方式图10-2使用公共__ 这个时候WAP设备请求了另外的一个在Internet上的WAP__这个图没有什么特别的地方需要说明只是当那些没有__营运商提供WAP服务的地方,或者是想自己建立WAP服务的地方,可以使用这样的方法 如果内容提供者想完全控制在WebServer和WAP设备之间的数据流发送和接收那么就应该__一个所谓的WAPserver这个设备其实是一个WebServer和WAP__的混合体并且经常是在一个防火墙的后面 图10-3说明了这个问题防火墙是可选的,但是强力推荐图10-3加入防火墙 WAP设备就像前面所说的那样进入Internet,但是现在连接到防火墙的时候,它将接受或者拒绝一些连接,然后将连接发送给WAP服务器内的WAP__在这个图中,在内容服务器和WAP设备之间是使用点对点的WTLS加密协议 WAP服务器对于一个普通的站点来说是不必要的
12.能从服务器推送消息到WAP设备吗? WAP
1.1不允许推送可以用__S来达到这个目的
13.WAP如何同Bluetooth,EPOC和Windows__竞争 这有点不大可能WAP是使得Web的内容迁移到__设备上EPOC和Windows__是设备的操作系统,它将使得微型浏览器可以浏览WML页面Bluetooth是一个RF(RadioFrequency)技术,它是一种小范围的无线网络
14.WAP能持续多久? 笔者个人的观点来看,WAP能持续多久,最终还是要取决于用户对WAP的信心一个好的技术往往在市场选择了其他的方式之后就被浪费掉了例如VHS,Beta和Video2000家庭视频标准从技术的角度上来讲Video2000提供最好的质量,但是市场选择了VHS,而且是三个里面最差的那个对于WAP的前景问题,很不幸的是WAP现在被标上了“____上的Internet”这样一个条框限制相信多数的WAP设备是____,但是WAP并没有__这个限制,说WAP是一个Web浏览器是错误的 WAP是可以在一个“瘦”客户端上提供类似于Internet上的服务和应用所谓“瘦”就是低能力的处理器,非常有限的显示屏幕等等这些应用如何能更好的工作,完全取决于__人员WAP现在的确是限制了__人员,但它是一个新技术,毕竟在发展的过程中有很多障碍 有很多人当他们见到手持的微型PC和PDA的时候说,因为小的显示屏幕和缺乏好的输入机制WAP就要死亡笔者个人认为这是错误的,首先是设备的问题,当人们外出时需要尽可能的少带设备;其次是花费问题,两个设备肯定比一个设备花费多,并且主要的WAP设备普通人都能够承受,而且花费也少 制造厂商可能想通过将PC和____集成在一起来解决这个问题那么设备的尺寸又是另外一个问题对于这样一个能够让人们使用的设备,肯定有很多限制首先是输入设备,当前最好得输入设备就是键盘若给____配一个合适的键盘,那么这样一个键盘的每个按键之间的间隔可能只有小孩子才可以使用其次是输出界面,一个人的眼睛最适合于观看五英寸的屏幕,任何比这再小的屏幕,用户都不得不再移近观看,这么大的一个屏幕将使得设备显得特别庞大并且无法放在一个普通的口袋里,而典型的____的显示屏幕是2英寸,如果用户想显示普通的640*480图像在这个屏幕上,那将是不太现实的 一个典型的混合PDA和____的设备有点像今天的NokiaCommunicator用户无法方便地使用这个设备,除非用一只手来抓住它另一只手来操作或者让它完全固定住而一个普通的____,用户只需用一只手就可以操作,包括抓住和输入 有人可能要说在一个__上使用数字键盘来输入是不可能使用普通的键盘的确是很方便,但是这并不意味着你在WAP设备上书写不方便现在成亿的__S都是从____上发出的,就证明了这一点 最后要说的是WAP不是在____上的WebWAP将拥有很长的生命期,只要有__者能够理解它并且应用它
15.有哪些成功的WAP应用?表10-1给出了很好的WAP应用的实例也许不是非常有用或者非常高科技,但是它们是很好的例子WAP可以提供Web的功能应用 这些应用是基于WML的,在普通的HTML下将无法得到预期的效果表10-1WAP应用应用类型地址翻译翻译成英文http://___.zenith.ie/wap/translateWAPCAM在线的WAP相机http://wap.colorline.no/demos.html从菜单选择WAPCAM域名检测检测.com.net和.nl域名的有效性http://kronkel.com/do__in.wml登记本演示登记本演示http://cgi.cse.unsw.edu.au/cgi-bin/cgiwrap/s2231995/GB/GuestBook.wml波兰机场信息波兰机场信息波兰语http://___.polish-airports.com/wap/__in.wmlSETI@Home级别列表显示SETI@Home级别列表KubaUrbaniakhttp://seti.__trix.pl/setiatwap/域名检测和注册检测和注册.com.net.org域名http://wap.tldnames.com/PDF__il安全的WAPe-__il有很多功能http://___.sanfa__.com/wap/pdf__il.wml 有一些URL地址非常长,可以从下面的地址来选择http://wap.colorline.no/links.wml
16.可以推荐一些好的WAP服务商吗? 下面有两个列表表10-2提供免费的WAP主机服务,他们的服务相差很大,但是都是免费的表10-3列出的是商业的WAP服务商,需要支付服务费表10-2免费的WAP服务商 提供商服务类型地点TagTag免费的WAP站点主机和在线的基于J__a的WAP站点编辑器美国http://___.tagtag.com/wapHQ免费和__的__Internet操作英国http://___.waphq.co.uk/WAPServi__免费的WAP公共服务瑞典http://___.wapservi__.com/Wappy免费的WAP站点和重导向服务荷兰http://___.wappy.to/SoWAP免费的WAP主机(法文)法国http://___.sowap.com/_______2Surf真正免费的HTML服务,但是他们支持PHP3来提供WAP内容服务英格兰http://___._______2surf.net/Anytimenow.com免费的20M空间,在线编辑和存储wml和wmls文件同样提供WAPe__il服务,包括Hot__il英格兰http://___.anytimenow.com/Hoiley.com免费的离线WAPbuilder-WMLedit仍在beta版本德国http://___.hoiley.com/Waphome.ch免费提供商,在德国,包括在线的基于WAP的转换服务瑞士http://___.waphome.ch/WapSpy免费提供商,文件上传,图像库 http://___.wapspy.com/WapMineWindows离线编辑器,WAPpage美国http://___.wapmine.com/WapDrive免费提供商betaversion http://___.wapdrive.netWAPHomes免费提供商在德国德国http://___.wap-homes.de/AddCom免费提供商在德国德国http://___.addcom.de/Wap__tic免费提供商在英国和德国德国http://___.wap__tic.de/DeZinesWebhosting几乎免费提供WAP环境,包括PHP国际http://___.web-hosting.com/Done免费提供商(在土尔其和英国)包括字典,游戏等土尔其http://___.donetr.com/index.htmlStart.no很好的免费WAP站点还有很多服务在挪威挪威http://wap.start.no/表10-3商业的WAP服务商 提供商服务类型地点wapHQWAP应用主机,合作应用英国http://___.waphq.co.uk/BrainstormWirelessApplicationServi__提供和__商英国伦敦http://___.brainstorm.co.uk/IntegrationWireless创建__商务美国华盛顿http://___.integrationwireless.com/
17.以前没有WAP的经验,但是想学,如何动手?建议在站点wap.com查看一下《BeginnersGuidetoWAP/WML》另外可以从ASPToday(http://___.asptoday.com)中发现一些如何书写WMLScript的文章许多人都会发现在阅读了一些文档之后能很容易的上手笔者也建议你在阅读了一些文章之后再开始做哪儿有一个WAP词汇表?这里有一个词汇表(表10-4)表10-4词汇表WAPServer一个经常错用的词汇一个WAPServer从真正的意义上来说和一个HTTPServer没有太多不同Nokia将他们的HTTPServer和WAPGateway集成产品也叫做WAPServer其实是一个内容提供服务器和____完成__的内容,内容提供服务器完成内容提供服务器的功能WAPGatewayWAPGateway是一个两种模式的设备(像许多__一样)从WAP设备这边来看,WAP设备只懂得二进制格式的WML,WAP__的功能就是转换内容为这种格式从HTTP服务器这边来看,WAP__可以通过HTTP头提供附加的有关WAP设备的信息,例如WAP设备的__号码,__ID甚至是位置信息WMLCard一个在WMLDeck中包含导航、用户交互的完整的WML块一个或者多个WML卡片必须包含在WMLDeck中WMLDeck就是XML文档(Deck就是扑克牌盒,Card就是每张牌)WMLDeck一套WML卡片整个Deck在请求的时候都将装入到浏览器中,然后针对其中的每个卡片进行处理SGMLStandardizedGeneralized__rkupLanguageUAUserAgent.能够解释WMLWML,WMLScript,WTAI或者其他格式的代码的软件WMLScriptScriptinglanguageforWAPdevi__s基于J__aScript,但是功能比较弱XMLExtensible__rkupLanguageW3C的Internet__rkupLanguages标准.WML是这些语言中的一种XML是SGML的子集HDMLHandheld__rkupLanguageW3CWorldWideWebConsortiumhttp://___.w3c.orgWAEWirelessApplicationEnviro__entWSPWirelessSessionProtocolPDAPersonalDigitalAssistant通常是一个手持的设备,例如PalmPilotWAP不是仅仅为蜂窝__设计的,PDA也可以支持Element 一个元素指的是在WMLDeck中的标记和结构信息DTDDocumentTypeDefinitionWTPWirelessTransactionProtocolWTLSWirelessTransportLayerSecurity一个“等价于”SSLSecureSocketsLayer的协议WDPWirelessDatagramProtocol
19.除了这个FAQ,我在哪儿能找到更多关于WAP和WML的信息? 可以在本书的第8章WAP资源中找到很多相关的资源
20.WAP
1.1和WAP
1.2有什么不同 现在主要的设备和应用或多或少的遵循WAP
1.1协议WAPForum已经发布了WAP
1.2,里面没有太多值得注意的不同毕竟一个协议不能进化得太快 总的来说,WAP
1.2中有以下几个最重要的新特点对每个特点最好参考WAP
1.2Specifications新协议UAPROF(UserAgentProfile)它基本上同意用户代理(可以近似理解为浏览器)使用一种方式来告诉内容提供者它有什么样的功能这样使得提供者可以格式化输出最好的功能到这个专门的用户代理PUSH.PUSHing简单的说就是让应用服务器可以发送数据直接给用户代理WMLac__sskey属性加入到a、anchor和input标签中ac__sskey属性将允许用户只需要按一个专门的按键转跳到一个专门的锚或者输入框中pre标签看起来还没有在发布的版本中公布我们将假设它和HTML中的pre标签具有同样的意义enctype属性加入到go使用这个可以知道发送的数据将进行加密处理,要么是application/x-___-urlencoded或者multipart/form-data对于GET,只引用前者align属性增加到table指定对齐内容使用L、R、C和D分别对左,右,中和默认input的格式化属性Nf已经从绝对数值变化到可以从0到n字符编码不在依靠指定的专门的meta标签WMLScript标准库URL库已经确认为RFC2396在字符串中如何表示非US-ASCII字符非US-ASCII字符必须转换成本地可用的字符集
21.在WAP中如何实现多媒体流?在一家叫做Sontora(http://___.sontora.com)的公司发布一些有关Mobicast的信息之前,这被认为是不可能的Sontora的一些有关Mobicast的信息将可以在任何WML
1.1的设备上使用声音流,包括MP
3、WindowsMedia和RealAudio,并且不需要对设备进行任何的修改要想得到更多的信息,可以浏览他们的站点 以前说不能是因为WAP协议不允许操作硬件更谈不上播放音乐了即使是Web的协议也不可能对于Web环境是使用插件来解决的但是对于WAP环境没有插件 其实,可以使用WAP来点播歌曲,然后使用__呼叫,将歌曲传送过来,就像__传递那样
二、关于WML的常见问答
1.简单说WML代表什么? WML代表“Wireless__rkupLanguage”WML就是无线标记语言(Wireless__rkupLanguage),内置于__设备中的微型浏览器能够解释这种标记语言虽然它和HTML语言很相像,但WML其实是XML的一个应用子集
2.什么是WML? WML代表Wireless__rkupLanguage,就象HTML对普通的Web浏览器一样有人说它是基于XML,但是更准确地说WML是XML的一个应用虽然在语法上和HTML相似,但更多的是XML如果准备从HTML到WML,但是没有任何的XML知识,将会发现WML“非常”严格就像HTML,WML被读取并且通过WAP设备中的浏览器解释,然后显示在屏幕上对于WAP设备,浏览器,或者用户代理,通常叫做微型浏览器微型浏览器的功能是受到WAP设备的限制的 ___使用WML而不是使用广泛的HTML原因是由于WAP的工作方式以及WAP是为一个“窄小”的无线世界工作的在Netscape、Opera或者IE上显示HTML需要更强的计算能力计算能力某种意义上是__设备中的电能由于__设备中的电能是有限的,所以WML在发送给WAP设备之前,通常要经过转换和压缩所以WAP使用的是WML 读者也许可能想到WML非常简单,甚至不能处理HTML中的多媒体类型这个不是问题标记语言(WML、HTML等等)没有操作设备的权限,例如播放声音或者显示动画仔细地观察HTML,就会发现没有一个HTML标签能够显示动画或者播放音乐限制是来自于运行标记语言的浏览器毕竟在大多数情况下,是谈论____但是这个限制应该随着无线Internet的发展而逐渐取消
3.WML与HTML有什么区别? 虽然WML看起来十分像HTML,但是在技术上两者的差别还是很大的WML是为微型浏览器所设计的HTML的一个子集WML的标准定义是基于XML的
4.Phone.com的HDML和WML有什么区别现在有__支持HDML吗 HDML(Hand-heldDevi__s__rkupLanguage)是Phone.com__的它使得Web页面可以在____上显示,其标准的公布先于WAP标准Motorola、Neopoint、Qualcomm等等公司的__使用Phone.com的浏览器,它支持HDML最新的UP.Browser支持HDML和WAP
5.___使用WML而不是HTML? 首先是WAP协议要求使用WML可能已经有能够支持HTML的WAP设备,但是那不是真正的有一些和无线设备很像的WAP设备支持HTML,但它们也不是直接使用HTML(例如MicrosoftMobileExplorer支持HTML和WML)MME设备只是将两个分离的部分做到了一起当然也有HTML的变种,例如iMode浏览器使用CompactHTML简单的说,如果谈论WAP设备,那么标记语言就是WML 有很多理由说明选择WML而不是HTML现在最重要的一个原因就是WML与HTML相比需要很小的带宽随着无线技术的提高,带宽会越来越宽这个原因可能不再是主要原因,但是在达到这么高带宽之前需要许多年的时间 另外一个就是HTML需要相对来说比较强的处理器处理器的能力意味着需要更强的能量在无线设备中能量来自于电池而一个低处理能力的处理器就意味着电池的使用时间可以更长 另外,HTML的确需要一个很大的显示屏幕____上的屏幕显然不能满足要求当然也许会有一个大屏幕的____,但是这样它就离__更远(也就是说越不像____)即使iMode支持彩色和一个类似HTML的显示,它的尺寸已经是你可以方便携带的最大尺寸
6.___对于无线设备要专门设计一种特别的语言才能访问Internet 许多年来,HTML标记越来越丰富,越来越庞大此外,浏览器对各种HTML标记的支持也大不相同这种状况已经与当初想建立一个简单的标准相背离 __设备(例如____)具有小屏幕、内存少、缺少方便的输入设备和带宽窄的特点这种状况驱使WAP讨论组发展一种新的为无线设备所使用的语言,WML就此诞生了
7.无线设备也能支持HTML格式吗? 从技术的角度上来说答案是肯定的既然HTML是为普通PC浏览器所编写的,也可以使用微型浏览器来浏览一个HTML页面,但是可能没有效果因为____不知道如何显示该文件这样通常导致微型浏览器出现混乱并且HTML页面通常都比较大,它会把__设备“撑坏”的
8.如何将HTML转换成WML? 当考虑转换HTML时,要想到WML是为小屏幕设计的,不可能像HTML那么丰富多采任何转换都将忽略很多HTML标记和许多内嵌的脚本只有一些简单的HTML页面可以被满意地转换转换可以使用工具包如SpyglassPri__,也可以通过在线的WAP__过滤
9.用什么可以浏览到WML页面? 首先需要一个具有WAP功能的__,例如Nokia71110,EricssonR320等等用于PC机的桌面WML浏览器也很多,例如WinWap、Wap__n等等
10.在哪里可以学到更多的关于XML的知识? 可以访问站点___.w3c.org/xml在该__上有许多关于XML的知识有详细的讲解
11.WML的一般语法是什么? WML非常像XML和HTML相比其语法规则更加严格,从而保证当微型浏览器解析和解释的时候不会有太多的错误信息 和HTML一样,WML使用“”和“”组成的格式化标签许多标签都是以tag开头,以/tag结尾在开头或者结尾中包含的部分叫做元素有些标签叫做空元素,只有标签,没有内容,如tag/ 许多元素有属性来描述应其中还有那些内容属性名字必须小写,并且属性值必须使用双引号括起来有些属性是必须的,有些是可选的一般的属性标签格式就像tagattribute1=value 变量可以在WML卡片中定义,它们的一般格式是$variablename 一个WML页面有一个专门的格式,它必须以XML的文档声明为开头xmlversion=
1.0!DOCTYPEwmlPUBLIC-//WAPFORUM/DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xml 所有的页面中的元素,都必须在wml和/wml标签之间
12.什么是一个“deck”? 一个WML文档有许多卡片(cards)组成一个卡片是一系列完整的WML代码这些卡片被称为一个“deck”卡片和“deck”的概念就有点像HTML中的锚标记aname=#achor1和一个HTML页面也就是说卡片是“deck”中的一个组成部分也可以把“deck”称为WML中的页面它们之间的关系可以比做一副扑克牌整副扑克牌就是deck,而每一张牌就是card
13.什么是WML的“deck”? WML的“deck”或者WML文件是指decks每个deck包含一个或者更多的card每个deck都以wml开始和结束并且每个card都以card开头或者结束 当WML微型浏览器处理WML文件或者deck的时候,它阅读整个deck,并且在deck内的各个card之间进行导航当装入deck的时候,deck里面所有的card都已经装入到内存中,直到浏览器装入另外的deck 如果熟悉HTML中的aname标签WML的card标签将是非常类似的wmlcardid=start_menu...somecode.../cardcardid=purchase...somemorecode.../card/wml deck和card可以按照这种方式调用[deckname][#cardname]如果deckname省略,那么浏览器就会查找当前内存里的cardname名字的card如果使用了deckname和#cardname,那么浏览器将装入deckname的整个deck,然后跳入到#cardname这个和HTML的工作方式很像
14.WML是大小写敏感的吗? 是的!要注意WAP
1.1使用小写的标签
15.如何显示一个美元符号? 使用两个在一起的美元符号来表示,即“$$”
16.想显示__的格式该怎么办? “$”是一个特殊的字符,使用“$$”来显示一个“$” 例如p Thepri__is$$
11.20/p
17.fieldset标签有什么作用? 编写WML页面的时候要考虑到设备的屏幕很小如果试图想把一个大的form在一个屏幕里面显示,就要指定那些标签保持在一个屏幕中那么fieldset标签将这些标签捆绑在一个屏幕上
18.postfield标签有什么作用? postfield标签使允许提交参数到服务器端注意有些早期的模拟器还不支持该标签,这将给__工作带来麻烦!
19.WML有类似HTML的__ilto标签吗? 没有但是你可以使用WML表单和服务端脚本来得到同样的效果
20.无法让input/格式正常工作是怎么回事? 至少NokiaWMLReferen__没有讲清楚有关input/标签的用法for__t参数控制着用户输入数据的类型和长度 注意到不是所有的WAP
1.1浏览器都接受所有的格式化代码例如Nokia7110就支持得不是很好MitsubishiTrium在处理“*f”代码的时候有点问题,“*”必须为1或者更大专门的格式化代码如下A从A到Z的任何大写字母,没有数字或其他字符a从a到z的任何小写字母,没有数字和其他字符N任何0到9的数字X从A到Z从0到9的任何字符x从a到z从0到9的任何字符M任何字符,输入默认从大写开始m任何字符,输入默认从小写开始*f(星号)意味着任何数字(包括0),f是格式的代码nf意味着恰好要输入的字符个数n从1到9f是格式代码\是转义输出字符 格式化字符可以组合使用来表示一种特定的格式输入但是强制一定的输入应当避免在用户出错的时候没有提示信息如果输入是不正确的,该填写的区域一般仍保持空白,直到让用户知道应该输入什么如果只想输入数字,使用“*N”那么将直接转跳到数字输入模式如果只想输入大写的字符,使用“*M”转跳到大写输入模式现举一些例子: “N”只接受一个数字字符 “*N”接受任何数字字符 “NN”只接受2个数字字符,不多不少 “ANN”接受一个大写字符(没有数字),后面跟着两个数字,不多不少 “X*N”表示可以接受一个字符(没有数字)后面跟着任意多的数字字符 “NNN\-NNN\-NNNN”表示接受美国的__号码格式,例如“123-456-1234” “2N\:2N\:2N”表示接受时间格式,例如“12:02:34” “NNNNNNNNN”表示接受9个数字字符 “9N”同样表示接受9个数字字符 __xlength参数控制着输入字符的总个数
21.如何防止一个空的field? 在大多数情况下需要知道用户确实是输入了一些内容在field中,不能让这些内容为空这个可以通过在服务端的检测来完成,也可以通过WML来完成 在WML中,这个检查可以通过合适的格式化代码来完成,或者使用一个在input标签中叫做emptyok=false的参数来实现(只有当必须要求用户输入的时候才使用)如果使用了value=something或者value=用户仍然可以发送空的fields 以下的行将接收任何值到usernamefield甚至用户将整个field清空另外field中没有任何东西,也能够提交form inputname=usernametype=textvalue=thingsfor__t=*M/ 除了用户将整个field清空,以下的行将接收任何值到usernamefield如果field是空的,他将不能提交form, inputname=usernametype=textvalue=thingsfor__t=M*m/ 以上的应用是针对大多数的浏览器在Nokia7110,emptyok参数可以有同样的效果 inputname=usernametype=textvalue=thingsfor__t=*Memptyok=false/
22.使用option标签的时候,无法一屏显示完该怎么办? 许多WAP__的显示屏幕只能显示三到四个选项按以下的方法分割option字段就可以输入更多的选项selecttitle=longselectlistoptgrouptitle=option1optionoption1-1/optionoptionoption1-2/optionoptionoption1-3/option/optgroupoptgrouptitle=option2 optionoption2-1/option optionoption2-2/option optionoption2-3/option/optgroupoptgrouptitle=option3 optionoption3-1/option optionoption3-2/option optionoption3-3/option/optgroup/select
23.想有一个永久的BACK在屏幕的右__有些好像是自动的,若没有,该怎么做? 可以加入以下代码dotype=prevlabel=Back /prev/do 更好的是使用template……template dotype=prevlabel=Backname=back /prev /do/template……
24.WAP支持列表吗? 是的,WAP
1.1支持列表和相关的标记
25.可以在WML中使用表单吗? 可以但是Nokia7110在显示表单的时候有些问题
26.WML支持什么样的表单提交方式? WML支持GET和POST方式但是Nokia7110在处理GET方式的时候有些问题
27.WML中如何增加参数到URL字符串中? 和HTML的工作方式很像,如下所示……___.someserver.com/someurlparameter1=value1amp;parameter2=value2…… 唯一的不同是将“”变成“amp;”
28.如何从WML向ASP传送数据? 假设有一个ASP叫做“myasp.asp”,并且有一个WML变量叫做“wmlvar”当发出请求“myasp.aspwmlvar=something”,可以使用下面的方法得到变量的内容 dimaspvar aspvar=Request.QueryStringwmlvar ASP变量“aspvar”将包含字符串“something”当然ASP变量也可以与WML变量同名
29.如何让WML页面自己更新? 有过Web经验的人喜欢使用 metahttp-equiv=refreshcontent=1;http://somewhere.com/ 来强制浏览器自动更新 虽然在WAP中也支持一些META标签,一个更好的办法是使用ontimer标签 以下的代码显示了如何自动转跳到另外一个卡片nextdeck.wmlxmlversion=
1.0!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xmlwml cardid=splashscreenontimer=nextcard.wml timervalue=40/ pPleasewaitforthetimertorunout.../p /card/wml 下面的代码将强制浏览器在一段时间后重新装入同一个卡片这个页面叫做loop.wmlxmlversion=
1.0!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xmlwml cardid=loopontimer=loop.wml timervalue=40/ pThistextwillbeshownoverandoveragain.../p /card/wml 注意必须避免浏览器可能要使用的cache机制
30.WML页面的最大大小是多少? 1397bytes/deck
31.WML页面的限制是多少? 由于WAP设备只有很少的内存,因此就存在着一个最大的WMLdeck的界限这里没有一个绝对的标准,根据浏览器的不同而不同表10-5列出了几种浏览器的限制 注意WMLdeck的大小是指编码压缩成二进制格式下的大小,一个没有压缩的WMLdeck可能很大,但是压缩后可能比较小表10-5不同浏览器的限制浏览器压缩后的WML大小限制UP.Browser
3.21492bytesUP.Browser
4.x2048bytesEricssonR320大约3000bytesEricssonR380大约3500bytesEricssonMC218多于8000bytesNokia71101397bytes
32.如何防止对WML页面的非法访问? WAP可以防止通过HTTP协议对文件和目录的非法操作注意有些WAP模拟器和虚拟的WAP浏览器可能不支持这个特点在这个时候是不知道是否有可能使用其他类型的验证方式 为了使用这种方式,用户的HTTP服务器必须支持这个特点,其实大多数服务器都支持当一个WAP浏览器请求一个URL,它将提醒用户输入用户名和__这些都转换成无法直接阅读的字符,但不是加密也就是说如果网络上有人在使用合适的设备监听,那么用户名和__将被泄露 这个特点在Apache文档中有详细的说明,但是文档的描述很弱,这里有如何在ApacheHTTP服务器上配置的说明 要保证Apache已经配置过,使得一个名叫.htac__ss的文件可以覆盖全局的操作配置操作配置既可以在每个目录使用分离的文件,也可以在全局的ac__ss.conf中但是在这个例子中,我们将集中在.htac__ss文件上并且检查AllowOverride的设置这个必须设置到AuthConfig,那样意味着Apache在目录中寻找.htac__ss文件,并且使用该文件中的规则记住在配置后要重新启动Apache服务器 下一步是在目录里放置需要保护的文件叫做.htac__ss(注意点代表文件名的开头)一个.htac__ss文件的基本内容如下AuthTypeBasicAuthNameWAPFAQAuthenticationDemoAuthUserFile/home/httpd/html/wap-faq/extras/auth/auth.passwdrequirevalid-user AuthType设置是指定验证的类型,AuthName指定领域,AuthUserFile指定口令文件的位置,require指定所想得到的操作在这个例子中,任何在口令文件中的用户都有一个正确的口令 现在需要产生一个口令文件,Apache使用一个叫做.htpasswd来完成这个特殊格式文件的生成运行程序如下#htpasswd/home/httpd/html/wap-faq/extras/auth/auth.passwddemoNewpassword:Re-typepassword:Addingpasswordforuserdemo 注意在第一次创建文件的时候,必须使用“-c”选项 现在加入了一个叫做“demo”的用户,并且输入了他的__两次考虑到安全的原因,口令文件不应该放在文件根目录下笔者在这里只是做演示 现在最后就是测试,笔者建议使用HTML浏览器输入含有想保护的URL目录的地址,一个对话框就会弹出来询问用户名和口令如果一切顺利,就可以使用WAP浏览器来测试了 一个目录保护的例子在这个服务器上,用户名是demo,口令是demo可以使用HTML或者WML浏览器来做测试 这个例子同样可以通过输入http://wap.colorline.no/demos.html来得到 或者只要点到保护的区域 http://wap.colorline.no/wap-faq/extras/auth/ 或者查看.htac__ss文件 最后__查看口令文件的内容
33.怎么使用非拉丁字符? 在文件开头加上 encoding=ISO-8859-1 或者 encoding=UTF-8 ISO-8859-1和UTF-8编码支持更多的字符
34.一些特殊字符破坏了代码和连接该怎么办? 锚/链接有时候包含了一些字母和数字之外的字符典型的如“~”(波浪号)和“”(与号)如果根据书编程,就应该告诉WAP浏览器使用的是什么字符集这个在XML定义中可以完成 xmlversion=
1.0encoding=iso-8859-1 “iso-8859-1”是Latin字符集这个应该在大多数场合下能满足需要但是,还是需要对那些转义字符进行转义即使指定了字符集,也是没有用处的 字符实体是某些特殊字符的标准名字,例如“”就是“amp;” 大多数浏览器在反编码名字实体的时候会出现问题,例如Nokia列出了7个兼容的名字实体“quot”、“amp”、“apos”、“lt”、“gt”、“nbsp”和“shy”只有在使用它们的十进制代码的时候(在上述所说的Link中),浏览器可以显示几乎所有字符如果Nokia的浏览器接收到无法支持的实体名,它就会崩溃 通过使用HTML或者WML浏览器(在HTML格式下,虽然不是很好),可以操作在线的实体名列表,该列表在http://wap.colorline.no/wap-faq/apps/charentref.html 这个表同样有一个例子在http://wap.colorline.no/demos.html 第一步,选择将要使用的字符集,Latin1,Latin1__the__tical和Greeksymbols,最后是Latin1__rkupsymbols注意到列表被分割了,是由于deck的限制真正的列表显示了实体名,实体的十进制值和真正的符号从这里就可以看到哪个字符浏览器可以显示 注意上面的在线列表,不要设置为“charset=iso-8859-1”(真正的Latin1),那是个XML定义
35.可能在WML页面上显示一个可选的Link吗?当用户选择后就可以直接拨号?现在不行但是一旦支持WTAI的设备出现,那么就可能实现
三、关于WAP__的常见问答
1.__WAP软件需要哪些工具? 为了__WAP应用程序,需要一个WAP__(注意这里的__可能是指支持WML的服务器可以通过配置___服务器达到这个目的)和WAP工具包工具包应当包括模拟器和能让__者浏览WML网页WML页面的__和HTML页面的__一样,可以使用Notepad或者其他文本编辑器来进行编辑
2.有哪些公司现在提供这样的__环境?Nokia、Ericsson、UpPhone和Motorola都提供免费的WAP__和工具包Nokia NokiaToolkit和NokiaWAPServerEricsson EricssonR320和WapIDEUpPhone UpPhoneSDKMotorolaMotorolaADK
3.__WAP应用一定要有WAP__吗? 不是,当__WAP应用的时候,不一定需要WAP__模拟器可以帮助__者解决大部分的问题但是如果是__商业__,特别是想知道各种____在显示WML页面上的差别的时候,最好是配备一个目前各种__对WML标记的支持和中文的支持状况大不相同,因此WAP__还是必要的
4.__者需要一个WAP__吗? 不是很必要如果只想进行简单的WAP内容服务,可以使用现有的Web服务器(只需要修改MIME类型)____会通过坐落在本地的__连接到你的服务器上 但是在__上驻留__者的程序有很多好处既然__者的程序是__的一个部分,__者就可以知道呼叫号码、身份、位置等等
5.可以看到WML的源代码么? 如果__者使用SDK浏览的时候将能够看到WML的代码如果只有一个HTML浏览器,可以访问“FetchPage”服务(http://___.webcab.de)来取得代码这个可以显示在Internet上的任何WML页面中
6.可能在WML中加入applets吗? 不能
7.可以使用HTML__工具来__WAP应用吗? 在大多数情况下__工具是使用基于PC的浏览器HTML、J__aScript和J__a对于WAP__来说都没有用处但是,越来越多的__工具在加入对WML的支持 Allair的ColdFusion
4.5和HomeSite已经有WML支持,虽然Allair也许需要清除一些BUG另外PHP和ASP在Coldfusion/HomeSite也能支持 可以到__rjoleiKat__a的HomeSiteHelpsite上得到更多的信息
8.可以通过WML页面来操作数据库吗? 可以,与创建HTML页面相同任何相关的服务器端的技术都可以用来生成WML页面
9.可以使用CGI生成WML页面吗? 当然可以用创建HTML同样的方法来创建WML如果想书写一个CGI来创建WML,只要记住在页面的开头正确设置MIME类型具体的形式根据所使用的语言不同而不同例如在Perl中printContent-type:application/vnd.wap.wml\n\n\n; 注意至少要使用2个换行
10.如何使用ColdFusion来生成页面? 使用ColdFusion只需要加上 CFCONTENTtype=text/vnd.wap.wml
11.如何使用PHP来书写动态的WML页面? PHP(和大多数其他服务端脚本语言一样)可以被用来书写动态的WML内容只需要将输出的标记限制在WML微型浏览器可接受的范围内 注意PHP有很多内建的HTML功能,特别是错误功能,这些功能WML微型浏览器可能无法识别 PHP同样可以在一个HTML文件中编写出既适合于HTML,也适合于WML的内容PHP的源代码对于客户端来说是不可见的因此可以针对HTML浏览器输出HTML页面,针对WML浏览器输出WML页面 可以在__PHP编写的WML页面的时候把以下代码加在开头//headerContent-type:text/vnd.wap.wml; echoxmlversion=\
1.0\\n;echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\//http://___.wapforum.org/DTD/wml_
1.
1.xml\\n\n; 基于PC的浏览器将忽略这些无法理解的WML标记但是如果想在WAP设备或者模拟器上测试的时候,只需要将//去掉,页面自动变成WML页面
12.使用PHP动态输出WML 这些例子生成一个非常有用的应用叫做PizzaCalc它将输入所有的pizza的帐单和人的数目,可以算出每个人的花费 应用生成一个动态的页面叫做“calc”或者“input”注意到所有的转义字符例如双引号该页显示了一个简单的变量处理,和如何传递参数到另外的卡片 使用WML浏览器就可以测试应用程序 http://wap.colorline.no/wap-faq/apps/pizzacalc.html 或者输入 http://wap.colorline.no/demos.html选择应用headerContent-type:text/vnd.wap.wml;echoxmlversion=\
1.0\\n;echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\\http://___.wapforum.org/DTD/wml_
1.
1.xml\\n\n;echo!--TheapplicationPizzaCalcwasoriginally__debyTheCrusaders___.crusaders.noontheCommodoreAmiga--\n;echo!--Itwasunfortunatelynotpossibletoemulatethecrapintergerhandlingoftheoriginalprogram--\n;wml if$action==calc{ echocardid=\result\title=\PizzaCalc\\n; echodotype=\prev\label=\Back\\n; echogohref=\pizzacalc.html#input\/\n; echo/do\n; echop\n; echoThecostpereaterwillbe.$total/$eaters.br/\n; } else{ echocardid=\input\title=\PizzaCalc\\n; echop\n;echoanchorSplitPizzabillgohref=\pizzacalc.htmltotal=\$totaleaters=\$eatersaction=calc\//anchor\n; echobr/\n; echoTotalcost:inputtype=\text\name=\total\for__t=\*N\/\n; echoEaters:inputtype=\text\name=\eaters\for__t=\*N\/\n; }/p/card/wml
13.可以使用J__aServlet来生成WML页面吗? 当然可以使用创建HTML同样的方法来创建WML如果想书写一个CGI来创建WML,只要记住在页面的开头正确设置MIME类型 response.setContentTypetext/vnd.wap.wml;
14.可以使用ASP、Perl等生成动态的应用吗? 是的可以使用任何服务器端的脚本语言来生成WAP应用
15.如何使用ASP书写WML内容? ASP(ActiveServerPages)可以做到和PHP一样,也可以用来书写动态的WML如果需要一些好的例子请参考LucaPassanisWAPandASParticles或者查看Jean-LucPrazsjeanluc@corobori.com更多的ASP例子在http://___.corobori.com/wap/
16.使用ASP动态输出WML页面时候,已经设置了Content-type,但浏览器返回的仍然是text/html,有什么问题吗? 如果在ASP脚本中有一个错误,那么诊断程序会发还一个HTML页面,请检查脚本
17.在使用ASP生成WML页面的时候出现了错误MIMEtypetext/htmlisnotsupported,会是什么问题? 这个问题是Web浏览器不知道WML的正确类型,修改ASP的第一行,加入 Response.ContentType=text/vnd.wap.wml 后就可以工作了
18.下面的代码有什么问题吗?%Response.ContentType=text/vnd.WAP.WML%xmlversion=
1.0 去掉xmlversion=
1.0之前的空格XML解释器希望在这行中没有其他字符,甚至是空行
19.ASP代码可以在模拟器上工作,在真正的浏览器上怎么不行? 在很多模拟器上没有像真正的WML浏览器那么严格这些对于那些没有使用__的模拟器(NokiaSDK/Toolkit)来说更是这样,有些就根本没有使用__(WinWAP、Wap__N) 一个真正的WML浏览器应该只读取二进制的数据(从WML编码得来的)WMLC,对于__应该将文本WML转换/编译成WMLC语法是非常严格的ASP是为HTML浏览器设置的,但是HTML没有WML那么严格 这里在ASP生成动态页面的时候有一个微小的“bug”它在WML浏览器上不允许有任何地方输出白行(例如空格,回车,换行)注意到有些__可能会修正这些问题,但有的则不管(例如CMG__) 下面是一个常见的ASP代码用来输出WML页面开头的MIME类型%Response.ContentType=text/vnd.wap.wml%xmlversion=
1.0 问题就在ASP将会在.wml%和xmlvers之间输出换行和回车这两行就被分割了这将打乱WML代码的内容WML必须以“”开头,而且第一行是xmlversion=
1.0就上面的WML页面回车/换行将会出现问题 最简单的解决办法是 %Response.ContentType=text/vnd.wap.wml%xmlversion=
1.0 在XML定义正确的格式化以后,后面的部分WML对空格就没有那么严格的要求 要注意的是有些__在输出ASP的时候会有问题,因此在WML代码中最好使用Response.Write而不是%=MyVar%
20.如何使用Perl来生成WML内容? 和其他Server端程序一样Perl也可以用来书写漂亮的WAP应用程序 最常见的就是如何使用Perl输出正确的MIME类型,下面的例子说明了这一点printContent-type:text/vnd.wap.wml\n\n;printxmlversion=\
1.0\\n;print!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\\http://___.wapforum.org/DTD/wml_
1.
1.xml\\n;printwml\n;……
21.应当如何下手书写WAP应用程序? 其实需要的只是Text编辑器但是使用一个__工具可以节约很多时间 在这之前应该浏览一下WAP的权威站点___.wapforum.com 在NokiaWAP____中进行注册,并且下载NokiaWAPDeveloperToolkitToolkit中的PDF文件可以给出一定的WML和WMLScript指导NokiaToolkit需要JREJ__aRuntimeEnviro__entv.
1.
2.2或者更高版本 虽然工具可以用来为WAP设备设计应用,但是不是为专门的____在WAP__工具上所看到的并不代表用户在__上所看到的为了确定想看到的事情,最好需要一个WAP设备,例如____,或者模拟器 NokiaWAPSDK2有一个7110的模拟器模拟器是一个有效的检测方式,能检测程序中的bugNokiaSDK同样还包括一个小的WAPserver让__者可以从本地或者HTTP服务器上下载WML页面 到Phone.com__站点注册后,Phone.com提供UP.browser这是最流行的浏览器,特别是在美国,Phone.com提供UP.SDK在注册之后就可以下载 对于EricssonR320和R380是最近的事情应该注册并查看EricssonsDevelopersZone来得到__工具R380是一个非常好的模拟器,在Symbian不需要注册就可以下载Ericsson没有公开的为R320的模拟器 Motorola有一个平台叫做MobileInterneteXchange或者MIXMobileApplicationDevelopmentKit已经__出一个__平台,即为WAP也为Motorola的VoxML在注册后,可以在下面的网址找到数据包 http://___.motorola.com/MIMS/MSPG/cgi-bin/spn___dk.cgi. WAPmine是一个__的应用,叫做WAPPage是一个所见即所得的编辑工具而且有一个XML树型控件来编辑WML标签 如果在__公共应用程序时,想在很多设备上测试你的程序,就像在不同的浏览器上测试HTML页面一样注意在不同的WML浏览器上的差别,可能比在不同的HTML浏览器上的差别要大
22.如何编写和测试WML页面? 现在有很多SDKAnywhereYouGo.com有WAPSDK和IDE列表,可以下载一个来用任何文本编辑器都可以书写一个简单的WML页面,当然HTML编辑器也可以(特别是那些支持个人定义标签的),例如AllaireHomesite(http://___.allaire.com)可以使用SDK来做简单的测试,但是对于大的项目可能要困难些AnywhereYouGo.com已经建立一套基于Web的工具来帮助WAP测试
23.哪儿可以在找到WML的测试工具? 首先确定WML代码是正确的,然后再使用WML测试工具 有一个非常好的测试工具在ZygoCommunications(http://wap.z-y-g-o.com/tools/),测试工具是用Perl写的里面还有其他的工具可供下载
24.如何操作WML页面? 操作WML页面或者卡片,最简单的办法是通过现有的__大多数____提供者将功能都放在主页上,在上面可以通过WAP设备操作__的链接一般叫做“GotoURL”当选择以后,WAP设备将通过__操作指定的普通IP或者URL在这种情况下,__读取从WAP设备发送给__的WML内容,就像PC浏览器读取内容的过程一样 有些营运商选择不让他们的用户操作其他的站点这个就像InternetServi__Provider只允许用户操作ISP自己的站点像这样的做法是不明智的,这样会发现自己的用户去其他地方了 如果要坚持这种方法,可以通过ISP拨号或者使用一个公共的__来取得其他的WAP资源
25.有没有一个友好的方式来管理WML内容? 还没有虽然Oracale正在__数据库驱动的文档服务,被称为Pana__,可以支持WAP分发
26.如何防止用户代理cache页面? 如果用户使用ASP,应该加入一行%Response.expires=-1%,这个将阻止Cache
27.怎样防止从Cache中读取WML页面? 当WML页面下载到WAP设备后,它将保存在WAP设备内存中一段时间,直到这个时间过期在这之后,页面将从服务器下载,而不是从WAP设备的缓存读取这个过程被称做Cache 但是有些时候不想让页面从缓存中读取,而是从服务器端读取一个典型的例子就是当服务器的内容不断在更新的时候,通过在HTTP头中加入一定的cache信息,来告诉WAP设备该页面将不存储在缓存中 可以在服务器端生成HTTP头,或者使用PHP、ASP、Perl或者其他服务端__语言这一行不能被包括在页面里,既然是HTTP的信息头,就不是WML元素 对于静态页面,或许没有使用服务器端脚本语言,许多浏览器支持META标签来控制浏览器的Cache看本部分的最后的例子 将下面代码加入到HTTP头中,页面将马上过期Expires:Mon26Jul199705:00:00GMTLast-Modified:DD.monthYYYYHH:MM:SSGMTCache-Control:no-cachemust-revalidatePrag__:no-cache 第一行告诉微型浏览器,页面已经过期一段时间了第二行告诉浏览器页面最后一次修改的时间DD应该换成当天的日期,monthYYHHMMSS等等类推第三行和第四行有同样的效果告诉浏览器页面不被Cache(第三行适用于HTTP
1.1,第四行适用于HTTP
1.0) 下面的是PHP的一个例子//setthecorrectMIMEtype headerContent-type:text/vnd.wap.wml;//expiresinthepast headerExpires:Mon26Jul199705:00:00GMT;//Lastmodifiedrightnow headerLast-Modified:.gmdateDdMYH:i:s.GMT; //PreventcachingHTTP/
1.1 headerCache-Control:no-cachemust-revalidate;//PreventcachingHTTP/
1.0 headerPrag__:no-cache; 下面是使用WebClassesVB的例子使用Response.Expires=-1,防止Cache PrivateSubWebClass_Start SetcorrectMIMEtype Response.ContentType=text/vnd.wap.wml __kesurenocaching Response.Expires=-1 Response.AddHeaderPrag__no-cache Response.AddHeaderCache-Controlno-cachemust-revalidate Usebasi__mlmyownastemplate SetNextItem=basi__ml EndSub 这里有一个ASP的例子,同样使用“Response.Expires=-1”防止Cache% Response.ContentType=text/vnd.wap.wml Response.Expires=-1 Response.AddHeaderPrag__no-cache Response.AddHeaderCache-Controlno-cachemust-revalidate% 最后是使用META的例子xmlversion=
1.0!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xml wml head metaforua=truehttp-equiv=Cache-Controlcontent=__x-age=0/ /head cardid=alway___pire pThisdeckwillneverbestoredinthecache/p /card /wml 下面的页面是在经过86400秒24hours后过期xmlversion=
1.0!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xml wml head metaforua=truehttp-equiv=Cache-Controlcontent=__x-age=86400/ /head cardid=expire1day pThiscardwillliveinthecacheforaday/p /card /wml 有些浏览器例如UP.Simulator如果可以通过“返回”达到另外一个卡片,那么它将不会重新装载卡片为了强制这个更新动作,用户必须在META标签中使用must-revalidate参数 metaforua=truehttp-equiv=Cache-Controlcontent=must-revalidate/
28.如何防止变量被保存在Cache中? 变量保存在Cache中,这样变量还可以再利用例如当用户返回到上一个输入卡片,他不需要重新输入,只需要改变需要改变的地方但是在某些情况下这会造成一些问题例如以WAP聊天系统,有些变量用了一遍又一遍,但是需要不同的内容有些浏览器,例如Nokia7110,就会存在类似的在该清除的时候无法清除的问题 在WML中,card标签有一个参数叫做newcontext 当newcontext=true 时清除所有的变量但是这样也清除了所有导航的历史记录,这意味着back按钮不再工作 为了清除变量,可以告诉浏览器将变量设为空setvarname=one_variablevalue=/setvarname=another_variablevalue=/ 但是,不是每个时候都有效果在某些情况下必须使用一个难以想象的方法来清空变量就是使用onenterforward__oneventtype=onenterforward refresh setvarname=one_variablevalue=/ setvarname=another_variablevalue=/ /refresh/onevent
29.怎么能够知道请求是从WML浏览器来的还是HTML浏览器来的? 既然要利用已经存在的为HTML浏览器编写的代码,就需要知道请求是从HTML浏览器还是从WML浏览器过来的同样地,如果想重新引导的HTML浏览器直接到相应的HTML文档上,WML浏览器到WML页面上,以下的PHP代码就可以做到这些//BecausethisscriptsendsoutHTTPheaderinfor__tion//thefirstcharactersinthefilemustbethePHPtag.//relativeURLtoyourHTMLfile $htmlredirect=/html/my_htmlpage.html;//ABSOLUTEURLtoyourWMLfile $wmlredirect=http://wap.mysite.com/wml/my_wmldeck.wml; ifstrposstrtoupper$HTTP_AC__PTVND.WAP.WML0{//Checkwhetherthebrowser/gatewaysaysitac__ptsWML. $br=WML; } else{ $browser=substrtrim$HTTP_USER_AGENT04; if$browser==Noki||//Nokiaphonesandemulators $browser==Eric||//EricssonWAPphonesandemulators $browser==WapI||//EricssonWapIDE
2.0 $browser==MC21||//EricssonMC218 $browser==AUR||//EricssonR320 $browser==R380||//EricssonR380 $browser==UP.B||//UP.Browser $browser==WinW||//WinWAPbrowser $browser==UPG1||//UP.SDK
4.0 $browser==upsi||//anotherkindofUP.Browser $browser==QWAP||//unknownQWAPPERbrowser $browser==Jigs||//unknownJigSawbrowser $browser==J__a||//unknownJ__abasedbrowser $browser==Alca||//unknownAlcatel-BE3browserUPbased $browser==MITS||//unknownMitsubishibrowser $browser==MOT-||//unknownbrowserUPbased $browser==MyS|| //unknownEricssondevkitbrowser$browser==WAPJ||//VirtualWAPJAG___.wapjag.de$browser==fetc||//fetchpage.cgiPerlscriptfrom___.wapcab.de$browser==AL__||//yetanotherunknownUPbasedbrowser $browser==Wapa//anotherunknownbrowserWebbasedWapalyzer { $br=WML; } else{ $br=HTML; } } if$br==WML{//For__thebrowsertoloadtheWMLfileinstead header302MovedTemporarily; headerLocation:.$wmlredirect; exit; } else{//For__thebrowsertoloadtheHTMLfileinstead header302MovedTemporarily; headerLocation:.$htmlredirect; exit; } 这个判断是在服务端完成的,PHP代码将首先查看__是否接收text/vnd.wap.vmlMIME类型如果不是,将检测前面的字符,查看是否为WML浏览器如果不符合,那么就假设为HTML浏览器如果有新的WML浏览器,那么ID字符串也要增加 这个代码基于RobertWhitinger(robert@wapsight.com)的代码,使用了DonA__ro(dona__ro.con__pcion@nl.unisys.com)提供的列表 注意由于只需要四个字符串就可以辨别,因此例如WapIDE-SDK/
2.0;R320sArial可以使用“WapI”来代替是可行的做法,也是足够的 同样的功能也可以通过ASP来解决先判断请求的是“/index.wml”或者“/index.html”和所需要的MIME类型另外以下的脚本辨别的方式和上面不一样另外还需要__告诉服务器它能接收的text/vnd.wap.wmlMIME类型该例子如下所示%Response.Buffer=TRUE DimIsWap httpAc__pt=LCaseRequest.ServerVariablesHTTP_AC__PT ifInstrhttpAc__ptwapthen IsWap=1 ElseResponse.Redirect/index.html:Response.Flush:Response.EndEndif%%Response.ContentType=text/vnd.wap.wml%xmlversion=
1.0%Response.Flush%!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xml wml cardid=redirect oneventtype=onenterforward gohref=/index.wml/ /onevent p ahref=/index.wmlenter/a /p /card /wml %Response.Flush:Response.End%
30.如何判断访问者是来自哪个浏览器或者____? 可以通过检查HTTP_USER_AGENT标签来判断例如试着使用MicrosoftInternetExplorer访问一个站点的时候,HTTP_USER_AGENT将返回Mozilla/
4.0(compatible;MSIE
5.0;Windows98);在同样的情况下使用Nokia7110访问这个站点,HTTP_USER_AGENT就会是Nokia7110/
1.0(
04.73)据此可以判断用户代理是什么类型的
31.可以得到用户代理的__号码吗? 不可以,除非__支持这个特点,WAP没有办法知道用户的__号码
32.可以通过WML使得可以用WAP设备进行拨号吗? WAP的__功能可以使用WirelessTelephonyApplicationInte_____(WTAI) 例如 WMLScript:WTAPublic.__keCall9287787; 但是第一代的WAP设备不支持这个功能
33.能够从WAP设备中读取数据吗,例如__号码? 这里有一些通过HTTP的信息,但是十分有限既然只有__发送过来少量的信息,像WAP设备的号码可能无法读取同时,在某些国家这还涉及到个人隐私的问题 基本上丢弃的内容就是WAP__传送给HTTP服务器的内容这不同于WAP__到__Phone.com的UP.Link__是一个最好的例子因为它在HTTP头中返回一个字符串叫做UP_X_SUBNO,里面包含了__号码Ericsson__将传送一个辨别设备用的字符串,但是在明文中没有__号码 每次WAP设备向HTTP服务器请求一个URL,WAP__就会将信息传送给HTTP服务器 以下的PHP脚本显示了从__过来的所有HTTP头的信息可以使用WML浏览器进行测试http://wap.colorline.no/clientinfo.html其他的例子也可以在下面的UTL中找到http://wap.colorline.no/demos.html 第一个部分是取得所有的标准HTTP头信息第二个部分是提取一个内容 headerContent-type:text/vnd.wap.wml; echoxmlversion=\
1.0\\n;echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\\http://___.wapforum.org/DTD/wml_
1.
1.xml\\n\n; echo!—CodewritteninMicrosoftNOTEPAD.EXEà\n;wml cardid=inittitle=ClientInfo p //Firstpart–standardHTTPstuff $headers=getallheaders; whilelist$header$value=each$headers{ echostrtoupper$header.:.$value.br/\n; } //Secondpart//IPaddressoftheclientside echoREMOTE_ADDR:.$REMOTE_ADDR.br/\n;//Portattheclientside echoREMOTE_PORT:.$REMOTE_PORT.br/\n;//Nameofauthenticateduser echoREMOTE_USER:.$REMOTE_USER.br/\n;//GatewayInte_____type echoGATEWAY_INTE_____:.$GATEWAY_INTE_____.br/\n;//Protocolusedbytheserver echoSERVER_PROTOCOL:.$SERVER_PROTOCOL.br/\n;//RequestMethod echoREQUEST_METHOD:.$REQUEST_METHOD.br/\n;//Connectiontype echoHTTP_CONNECTION:.$HTTP_CONNECTION.br/\n;//Hostitconnectedviaproxy echoHTTP_VIA:.$HTTP_VIA.br/\n; /p /card/wml HenrikGe__l(ge__l@dk.net)也有一个在线的基于WML的工具BrowserSpy,来显示更多关于HTTP头的信息、服务器环境和用户的浏览器等等有关这个工具的详细情况可以浏览http://wap.ge__l.dk/ WernerForkel提交了一个Perl的脚本,可以显示__号码(如果有)可以在以下位置测试http://wap.colorline.no/wap-faq/apps/subnotest.wml,同样也收集在http://wap.colorline.no/demos.html. 这些程序只适合某个__如果要测试其他的__,可能就显示不出__号码因此__号码不能作为ID号来处理至少因为不是一个全球的标准
34.有没有办法连接到__号码? 在某些情况下,当在显示了一连串的号码之后,需要中断功能连接到一个__号码上并拨号例如执行一个dial:12345678就非常像__ilto:标签 越来越多的浏览器都支持这个功能,但还不是所有Phone.comMitsubishi和Ericsson已经在浏览器中集成了这个基于WirelessTelephonyInte_____specifications(WTAI)的功能WTAI将允许以下的URL将关闭连接并且拨号 gohref=wtai://wp/mc;+4712345678__keacallto+47-12345678/go Nokia7110已经有个功能叫做“UseNumber”它可以通过WML卡片查找一个类似于__号码的列表,然后用户可以选择进行呼叫注意用户必须分离这些数字以便它能正常工作
35.使用GET或者POST方式能传送多少字符? 使用GET或者POST方式所能传送的字符数目,不同的设备有不同的限制一个GET通过UTL传送变量,能传送的数据总量比使用POST方式所能传送的数据要小例如,Nokia7110似乎对每个GET 限制在512个字节左右,但是POST最大可以达到一个编译后卡片的大小(约1300字节)UP.SDK
4.0将GET请求限制在970左右,最大可以达到一个编译后卡片的大小 显然,卡片有时候保存了要发送给服务器的参数的内容,既然编译后的卡片大小有限制,那么肯定要影响到整个所能传输的数据 在POST和GET之间没有太多的区别比如这个没有很好地使用GET的例子inputtype=textname=var1for__t=*N/ p anchorSendit gohref=somescript.cgivariable=$var1method=get/ /anchor /p 下面仍然是一个使用GET的请求,但是使用了postfield来传送参数这个代码就漂亮多了既然可以定义为GET,同样也很容易转成POSTinputtype=textname=var1for__t=*N/ p anchorSendit gohref=somescript.cgimethod=get postfieldname=variablevalue=$var1/ /go /anchor /p 直接改为POST inputtype=textname=var1for__t=*N/ p anchorSendit gohref=somescript.cgimethod=post postfieldname=variablevalue=$var1/ /go /anchor /p 最好是做测试找到到底能传输多少数据这里有个测试程序http://wap.colorline.no/wap-faq/apps/putsize.php3 这个程序也可以在下面的URL中找到http://wap.colorline.no/demos.html 该程序将产生一个卡片包含一个变量,里面包含了一定数量的字符X用户可以选择传输是使用GET还是POST在传输之后,脚本将要显示接收到的字符个数 脚本生成一个页面来测试使用GET或者POST方式到底能发送多少个字符xmlversion=
1.0!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//ENhttp://___.wapforum.org/DTD/wml_
1.
1.xmlwml head metaforua=truehttp-equiv=Cache-Controlcontent=__x-age=0/ metaforua=truehttp-equiv=Cache-Controlcontent=must-revalidate/ /head card dotype=prevlabel=Back gohref=putsize.php3/ /do p anchorGETdata gomethod=gethref=putsize.php3 postfieldname=\a\value=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ /go /anchor /p /card/wml
36.如何同HTML站点一样POST/CGI,返回表单数据到服务器? 如果使用 gomethod=posthref=mycgi.cgi 并且使用 postfieldname=fieldnamevalue=$NameOfInputField/ 就可以POST数据给CGI程序了
37.POST无法工作是怎么回事? 有很多说POST参数将会丢失的流言,特别是在Nokia7110就笔者所知,还没有哪个Nokia7110有这样的问题这个问题主要是存在于__或接收方 测试显示NokiaSDK
2.18,当使用内建__的时候,使用POST会出现问题甚至当method设置成“POST”的时候,服务器那边还是将POST请求作为GET 当使用POST的URL时,NokiaSDK将会崩溃在某些情况下URL的最后的字符将被删除 POSTTest页面将简单的POST的两个变量叫做“var1”和“var2”来显示整个变量的内容和HTTP头的内容如果不能看到正确的变量内容,肯定有问题检查HTTP头中的application/x-___-form-urlencoded(注意!需要在变量中输入一些内容) 这个方法解决了NokiaSDK
2.18的问题,可以把它配置到任意的公共__来测试笔者推荐使用wapHQ__ 在其他的情况下,POST确实不工作,问题可能是HTTP头在服务器端解释的时候有问题脚本语言,例如ASP、J__a或是CGI等等都是通过查看在HTTP头中的application/x-___-form-urlencoded完全匹配的字符串在某些情况下字符串可能有附加的数据,例如charset=utf8既然服务器端不是精确的匹配,它就不会查看HTTP头,因此POST就变量丢失了 注意这不是浏览器的问题,在HTTP头加入字符集描述,将造成脚本语言方面的错误 为了检测有关__或浏览器的问题,仍使用上面的POSTTest页面来测试同样查看application/x-___-form-urlencoded的输出,检查有没有附加的字符在结尾部分,如果有,那么这就是服务器端的问题 解决这个问题的方案很复杂,它随用户使用的脚本描述语言不同而不同,而且需要操作原代码简单地说,解决方案就是需要人工读取HTTP头,不要使用脚本语言已经写好的读取方式 这里有一个用ASP编写的解决方法它显示了如何在POST中抓取数据用户需要从二进制数据中发现需要的变量DimlngToalByteCountDimvntRequestData lngTotalByteCount=Request.TotalBytes vntRequestData=Request.BinaryReadlngTotalByteCount 全部的代码,就应该像下面的代码%@Language=VBScript%% DimTempisPostsWMLDeck Convertsthebinarydatatoastring. Fori=1ToRequest.TotalBytes Temp=Request.BinaryRead1 sPost=sPostChrAscBTemp Next ParsesoutthevaluesofthePOSTEDvariablesinthis examplemyvar1andmyvar
2. DimsVar1sVar2 sVar1=getVarmyvar1sPost sVar2=getVarmyvar2sPost WritestheWMLDeckdisplayingthePOSTEDVariables sWMLDeck=xmlversion=
1.0vbCrLf sWMLDeck=sWMLDeck!DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//EN sWMLDeck=sWMLDeckhttp://___.wapforum.org/DTD/wml_
1.
1.xmlvbCrLf sWMLDeck=sWMLDeckvbCrLfwmlvbCrLfvbTab sWMLDeck=sWMLDeckcardid=__intitle=POSTTESTvbCrLf sWMLDeck=sWMLDeckvbTabvbTabpvbCrLf sWMLDeck=sWMLDeckvbTabvbTabvbTabmyVar1:sVar1br/vbCrLf sWMLDeck=sWMLDeckvbTabvbTabvbTabmyVar2:sVar2vbCrLf sWMLDeck=sWMLDeckvbTabvbTab/pvbCrLfvbTab sWMLDeck=sWMLDeck/cardvbCrLf/wml Response.ContentType=text/vnd.wap.wml Response.WritesWMLDeck QuickfunctionforpickingoutthevaluesofthePOSTedvariables. sKeyisthevariablenamesRawisthePOSTstring. PrivateFunctiongetVarsKeysRaw DimsRetValIfInStrsRawsKeyThensRetVal=MidsRawInStrsRawsKey+LensKey+1IfInStrsRetValThensRetVal=MidsRetVal1InStrsRetVal-1EndIfEndIfgetVar=sRetVal EndFunction%
38.___META标签不工作? 浏览器不支持默认的meta标签,例如 metahttp-equiv=refreshcontent=1;http://somewhere.com/ 虽然有少量__支持非常有限的META标记但是测试显示,如果使用了它们,__就会出问题例如某__不支持普通的HTTPCache控制,如果要实现Cache控制只好使用特殊的META标记显然从其他__来的用户就可能不支持这个META注意不要使用METAtags肯定有其他的方式来完成你的想法 最常使用的META是 metahttp-equiv=refreshcontent=1;http://somewhere.com/ 这个告诉浏览器重新装入指定的WML页面WML中已经包含了一个ontimer
39.___服务器接收不到用户发送的参数? 用户输入的参数或者其他参数可以像在HTML中一样通过提交方式发送到服务器在HTML中这个是FORM,POST或者GET 首先知道要知道POST和GET的区别对于POST浏览器将生成一个数据包将变量名和它们的内容捆绑在一起,并发送到服务器对于GET,它其实是一个URL请求,变量名和内容都包含在URL中 对于WAP环境,要求是非常严格的,必须要根据协议来操作虽然以下的URL /cgi-bin/somescriptusername=johntelephone=123-123-1234occupation=banana+bender 可以在HTML环境中工作,但是在WAP环境中无法工作以上的部分编码将使得保护的变量内容被误解特殊的空格(在banana和bender)被转成“+”URL就根本没有空格 以上的URL在WAP中无法工作的主要原因是用来分割每个变量和变量内容的(与号)没有转义正确的格式应该是 /cgi-bin/somescriptusername=johnamp;telephone=123-123-1234amp;occupation=banana+bender 在这里被名字实体所替换为了解释更清楚些,请看下面的代码cardid=inputtitle=Gimmesomedata pinputtype=textname=usernamefor__t=M*m//p pinputtype=textname=occupationfor__t=M*m//ppanchorSendthisgohref=/cgi-bin/somescriptusername=$usernameamp;occupation=$occupation//anchor/p 注意这不是真正的WAP协议,专门的字符应该转义,否则将得到不可预料的结果
40.___在HTTP中的Referer看不见? 当HTML浏览器从一个URL到另外一个URL的时候,它默认地会发送一个叫做Referer的HTTP头给服务器,告诉它在浏览这个页面之前的那个页面这是一个非常有用的特点,在WAP环境中同样也有但是既然这个信息来自用户代理(浏览器)、WAP设备,通常为了节约带宽和时间,就被省略了 为了使用Referer,应该使用新的URL标签例如a,go等等,并且加入参数sendreferer gohref=/somedir/somedeck.wmlsendreferer=true/ 这样就会把参考的URL发送到服务器
41.如果没有找到URL,有可能重新将用户引导到另外一个WML卡片或者页面吗? 是的但这是服务器端的特点,与客户端没有关系
42.___普通的HTTP302重新导向不好使? 这的确是一个事实核心的问题是在服务端的脚本语言,而不是在服务端语言和服务器之间 所谓的302FoundHTTP反应是指服务器告诉用户代理,它所需要的资源在另外的地方可以找到302反应可能包括一个人们可理解的信息,如果在这种情况下“Content-type:”就被设置了笔者所测试过的服务器,即使没有内容也都加了“Content-type:”默认的“Content-type:”是text/html当然有些__不喜欢这个类型 以下的例子已经经过测试,在Apache和MicrosoftInternetInfor__tionServer都可以工作如果使用其他的WebServer,或者其他的脚本语言,需要能转换这些简单的脚本关键的工作是十分简单的,除非需要,不用告诉服务器整个HTTP头大多数WebServer将自动完成这个HTTP头,使得用户代理可以理解 所有的代码例子可以在线测试如果它们能够工作,用户将被重新引导到http://wap.colorline.no/clientinfo.html,在那儿将产生一个WML页面来显示所有的HTTP头 PHP代码测试可以在http://wap.colorline.no/wap-faq/apps/302test.php3中找到 headerLocation:http://wap.colorline.no/clientinfo.html; headerContent-type:text/vnd.wap.wml; Perl测试代码可以在http://wap.colorline.no/cgi-bin/302test.pl中找到 printLocation:http://wap.colorline.no/clientinfo.html\n;printContent-type:text/vnd.wap.wml\n; ASP测试代码可以在http://___.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中实现ASPSession吗? 不可能可以把信息存储在临时变量中模拟SessionSession是保存在用户PC上的“cookies”中目前的WAP设备不支持“cookies”不过下一代的设备和WML可能支持“cookies”
44.WAP支持Session吗? 在HTML中,一个十分普遍的“处理”用户的方法就是为每个用户分配一个“session”这个有时候是通过指定一个独一无二的cookies来实现的然而WAP的资源非常有限,因此session的处理必须以不同的方式来处理 AlexKriegel提供了一个__在WAPlinks的CustomSessionO__ect包这个zip文件中包含了VB类的文件和编译过的Dll文件,还有相关的文档这些可以在http://___.waplinks.com/customsessiono__ect.zip下载 另外一种方法是使用PHPlib,它是使用PHP编写的 Tariquetarique@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吗? 普通的HTTPCookies是作为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就没有能传送到你的WebServer这个脚本也能表示Cookie是否被传送 另外,这个脚本同样还显示HTTP头中的HTTP_VIA和HTTP_USER_AGENT这些能够得到所使用的__和模式一些__使用HTTP_VIS标识自己,而另外一些使用HTTP_USER_AGENT,还有一些则让程序无法知道 下面是它的PHP代码一个标准的PHPsetcookie函数只有在这种脚本语言中才会出现函数只是简单地设置cookie,并且PHP变量$HTTP_COOKIE_VARS用来读取cookieifisset$HTTP_COOKIE_VARS[TestCookie]{//CheckifTestCookieisset $cookieset=set;//ReadtheCookie $cookieid=$HTTP_COOKIE_VARS[TestCookie]; //andincreaseitsvalue $cookieid++; } else{ //cookiewasnotset $cookieset=notset; //startcounteratzero $cookieid=0; } //applytheCookietotheHTTPheader setcookieTestCookie$cookieid; //setthecontenttypeforWML headerContent-type:text/vnd.wap.wml;//disableALLcaching headerExpires:Mon26Jul199705:00:00GMT; headerLast-Modified:.gmdateDdMYH:i:s.GMT; headerCache-Control:no-cachemust-revalidate; headerPrag__:no-cache; echoxmlversion=\
1.0\\n; echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\ \http://___.wapforum.org/DTD/wml_
1.
1.xml\\n\n;echo!--ThisapplicationattemptstotestthecapabilitiesofaWAPgatewaytosupportcookies--\n; echo!--AppbyEspen.Lyngaas@colorline.noc2000--\n; //Generaterandomvalueforreloadforcing $random=mt_rand_____0999999; wml head//Evenmorecachedisablingmetaforua=truehttp-equiv=Cache-Controlcontent=must-revalidate/ /head cardid=inittitle=CookieTest p CookieTestCookiewasecho$cookieset. Valueiscurrentlyecho$cookieid /p panchorIncreasevaluegomethod=gethref=echo$PHP_SELFrandom=echo$random//anchor/ppGateway: ifisset$HTTP_VIA{//IstheresomethingintheHTTP_VIAvariable echo$HTTP_VIA; } else{ ifisset$HTTP_USER_AGENT{//IstheresomethingintheHTTP_USER_AGENTvariable echo$HTTP_USER_AGENT; } else{//Absolutelynoidentifierwasfound echoUnknown; } } /p /card /wml
47.如何使用WAP设备发送E-__il? 在HTML中有一个默认的E-__il机制“__ilto:”但在WML中不好使,因此E-__ils必须通过WML表单来解决例如wml cardid=edittitle=E__ilEditor pFrom:inputtype=textname=fromfor__t=*M//p pTo:inputtype=textname=tofor__t=*M//p pSu__ect:inputtype=textname=su__ectfor__t=*M//p pMessagebody:inputtype=textname=bodyfor__t=*M//p p anchorSendthis__il gomethod=posthref=http://some.host/__ilhandleraction=send/ postfieldname=fromvalue=$from/ postfieldname=tovalue=$to/ postfieldname=su__ectvalue=$su__ect/ postfieldname=bodyvalue=$body/ /go /anchor /p /card/wml 在代码中的http://some.host/__ilhandler是一个CGI程序,它是服务端的脚本程序,将提交的表单转换成E-__il格式并发送出去 如果想使用一个类似于发信的过程,就需要编辑变量名另外发送的数据是有限的,长信息可能需要打断 为了演示它是如何工作的,下面的PHP脚本可以用来处理__il它将格式化WML页面,告诉用户是否发出信件在真实的应用中,应该加入检测,例如E-__il的合法格式//____theclientthatthisisaWMLdeck headerContent-type:text/vnd.wap.wml; echoxmlversion=\
1.0\\n; echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\\http://___.wapforum.org/DTD/wml_
1.
1.xml\\n;//Thenameofyour__ilserver $__iler=wap.colorline.no;//For__tthefromfield $from=$from.WAPuserat.$__iler.;//Addthefromfieldandsomecharacterhandlingtotheextraheaders $extraheaders=$from.\nContent-Type:text/plain;charset=iso-8859-1\nContent-Transfer-Encoding:8bit;//StartsendingouttheWMLdeck echowml\n; if__il$to$su__ect$body$extraheaders{//UsePHPsinternal__ilfunctionality//__ilwassuc__ssfullysent echocardid=\sent\title=\__ilsent\\n; echop__ilwassentsuc__ssfully/p\n; echo/card\n; } else{//The__ilcouldnotbesent echocardid=\notsent\title=\__ilfailed\\n; echopUnabletosend__il/p\n; echo/card\n; } echo/wml\n; 因为安全性的原因,以上的代码没有演示程序
48.可以在模拟器上操作本地的页面,却没有办法访问Internet上的,有什么问题吗? 大多数模拟器和工具都可以浏览Internet、Intranet和本机的页面但是在访问一些大公司页面的时候,必须通过代理服务器来取得进入Internet的权限如果必须通过这个代理服务器来取得HTML页面,那么你的WAP模拟器也会取得权限来访问Internet 注意到有些模拟器不支持代理服务器,但是大多数是支持的在模拟器里面设置这些是很简单的用户所做的只需要将代理主机的名字、IP地址和端口号输入就可以了如果没有找到,你可以在systems/network管理器里面设置这些,也可以检查Netscape/IE的设置 在某些情况下,代理服务器使用userid和password来取得进入Internet的权限有些模拟器支持用户代理服务器,用户应该能告诉模拟器相关的代理配置 在极少的情况下,使用代理服务器(如MicrosoftProxyServer,)的用户会遇到更多的问题这个代理服务器只接受一种验证方式(userid/password)这种验证被称做NTLM,并且是某种MS的验证方式几乎很少有模拟器支持这种方式因此最好是避免使用它,或者让___使用“BasicAuthentication”方式以避免更多的麻烦
49.什么是PUSHing,它是如何工作的? PUSH被加入到WAP
1.2,而且只在WAP
1.2中才存在简单地来说,PUSH提供了另外一种从服务器向用户发送数据的方式PULLing是从客户端请求信息,然后接收它;PUSH意味着服务器可以向用户发送数据,而不需要用户来请求 内容或者应用服务器无法向用户代理直接发送数据,必须使用一种叫做PushProxy的__PPG是基于Internet的PushInitiator内容或者应用服务器与__用户之间的在Internet一边,使用PushAc__ssProtocol,在__网络一边使用PushOver-the-AirProtocol 当前只有WAP
1.2__平台支持PUSH,例如NokiaToolkit
2.0NokiaToolkit
2.0only内部支持PUSHing,意味着用户可以从工具包的界面将消息推送到模拟器如果想试着到一个外部的PushProxyGateway,工具包就崩溃了从readme文件中知道,PUSHing还没有经过完整的测试
50.WAP模拟器说text/html不支持,但是用户的MIME设置是正确的,___? 当使用服务端的脚本语言,例如ASP、PHP或者Perl,来生成WML输出,或者从HTTP服务器提供WML页面的时候记住HTTP一般默认的显示是HTML,其MIME类型是text/html 如果HTTP服务器或者服务器脚本有错误,错误的信息将使用HTML显示,因此微型浏览器是不能显示错误信息的 一个__工具/模拟器可以让用户看到从HTTP服务器过来的代码例如,在NokiaSDK中,这个功能被称做ViewSour__通过看代码可以知道HTTP服务器到底发送了些什么内容也可以使用普通的浏览器来查看任何HTML格式的错误信息
51.在哪儿有Visio____的模板库? 目前唯一知道的就是它包含在Nokia7110中
52.有没有其他有用的WML内容服务列表? 这里至少有一个 对于Unix用户,http://pwot.co.uk/wml/中有Tho__sNeill(ponder@pwot.co.uk)提供的WML工具,包括WML二进制编译和反编译 Angus和ZygoWAP(angus@z-y-g-o.com)已经__出了一个Perl工具包它还在为管道式的WML编译器工作
53.XML到XSL的转换可以应用到WML和WAP吗? 既然WML实际上是XML,并且XSL将WML转换成其他不同的XML文档,那么问题的答案是显然的XSL也可以应用到WML可以参考LucaPassani的文章《WebTechniques》这个文章在网络上的地址是 http://___.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.如何避免一个行的中断以便可以在一行中输入多个链接?在Nokia7110中,不可能做到这一点,每个链接都占据自己的一行
四、关于WMLScript的常见问答
1.简单地说什么是WMLScript? WMLScript是一种在客户端运行的脚本语言它是基于EC__Script的WMLScript和J__ascript非常相像,只是在功能上没有J__ascript丰富从更一般的方式来说,它是一个在客户端提供简单的应用程序,而不是一个显示的操作程序WMLScript是一个经过优化,更利于WAP应用的程序
2.可以将WMLScript嵌入到WML页面中吗? 不行不像将J__aScript嵌入到HTML中,WMLScript必须包含在一个__的文件中然后由WML调用
3.___一些Mitsubishibrowsers(Trium)不能运行WMLScript MitsubishiTrium能够运行WMLScript,但是浏览器有一个设置允许关闭WMLScript的运行像其他的HTML浏览器一样,可以关闭J__a或者J__aScript的运行 当然这里会有一个毛病,即使它不能运行WMLScript,它还能接受WMLScritpt
4.在哪儿能学到WMLScriptWMLScript.com的站点包含很多WMLScript的信息,甚至WMLScriptlibrary在Phone.comsDeveloper站点注册之后,可以得到很好的WMLScript版本http://updev.phone.com/dev/ts/beta/docs/wmlscript/
五、关于WBMP的常见问答
1.如何创建WBMP RCP分发系统有AdobePhotoshop
5.x和PaintShopPro的插件支持WBMP格式GIN__O和Teraflops提供转换的工具
2.哪种格式的图像可以放送到WAP终端? WAP标准规定的BMP格式WBMPWBMPType0是一个简单的黑白,非压缩的BMP格式细节可以参考 http://___
1.wapforum.org/tech/terms.aspdoc=SPEC-WAESpec-
19990524.pdf 如果某个WAP设备可以支持任何图像格式,那么WBMPType0是最小的要求
3.有GIF/JPEG到WBMP的转换器吗? 有在http://___.i__ge__gick.org在http://___.rcp.co.uk同样有一个Adobephotoshop的插件
4.有没有实时转换GIF到WBMP的工具? 可以试试 NetPBM ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/ PBMtoWBMP http://___.looplab.com/WAP/tools/
5.可以在WAP页面中混合声音和文本吗? 不很长一段时间内不会这是因为__的内存有限但是你可以试一试Palm或者Windows__的手持设备
6.有一个WBMP__在NokiaToolkit上能正常运行,但是在Nokia7110上却不能是___? 检查一下WML代码确定IMG标签没有高度和宽度属性,这通常导致错误另外一个原因是图像可能太大,造成当前的页面超过1400字节
7.当使用WBMP作为超链接等时,在7110模拟器上不工作,___? 7110不支持图像作为链接
8.WAP设备可以使用图形而不是文本吗? WAP协议允许使用一种叫做WBMP的图形标准,它是一个位(黑或者白)的BMP版本因此,所有的图形,为了适合这个协议,必须转换成WBMP 在使用WBMP的时候当然有很多限制,图像的大小不能超过150x150像素这是因为WAP设备的屏幕都非常有限例如Nokia7110屏幕是96像素宽,65像素高因此150x150像素看起来就特别大,占据了整个屏幕另外受WAP__的内存限制,图像的大小不能超过1461字节 因为不是所有的WAP设备都能显示图像因此,img中的“alt”必须使用,这样才能适用于那些不能显示图像的WAP设备 “WAPTiger”是一个非常简单的命令行BMP转换工具,可以去http://wap.infotiger.de/download.html下载有MS-DOS/Windows和Linux版本 可以在http://___.rcp.co.uk/distributed/Downloads找到免费的Photoshop/PaintShopPro插件 __cromedia有一个为Fireworks的外接插件可以让用户输出WBMPsPC版本在 http://download.__cromedia.com/pub/fireworks/xtras/wbmp_im_ex.exe __c版本在 http://download.__cromedia.com/pub/fireworks/xtras/wbmp_im_ex.hqx WebCab.de有一个非常漂亮的在线WBMP编辑器 http://webcab.de/woe.htm 它能让你通过手工草稿生成、上传并编辑WBMP如果只有服务器端的脚本语言程序,但是无法产生动态的WBMP,这是唯一的选择 在http://___.gin__o.de/wap/有一个免费的PIC2WBMP“__”转换器但是这个应用需要J__a运行环境因此如果是个新手的话,最好是下载PaintShopPro插件和最新的PaintShopPro,网址是 http://___.jasc.com/download.html PaintShopPro对于没有注册的用户来说是有时间限制的SW注册费用是$99USD Surerange____ysisLtd有一个免费的产品叫做I__geConvertDeveloper它是一个单线程的ActiveX控件,可以将GIF和JPEG转换成WBMP它同样有一个VC6的例子来说明如何使用 ApplepieSolutions提供一个在线的,基于WEB的GIF到WBMP的转换 http://___.applepiesolutions.com/i__ge
2.wbmp/ 如果指定用户想转换的文件的URL地址,它将让用户下载转换后的文件 在某些情况下用户想在HTML文档中显示WBMP为了达到这个目的,AndredeLeiradella(leiradella@writeme.com)已经写了一个J__a和C程序来从WBMP输出GIF,看起来就好像一个小的LCD显示器C版本可以作为CGI应用程序可以到下面的位置找到 http://members.xoom.com/leiradel/
9.如何实现动画? WBMP图像不同于在HTML中广泛使用的GIF格式它不支持动画但是还是可以使用WML的ontimer标签来创建一个请注意这种方式不是能达到想象中效果的 通过研究Ani__tedI__gesDemo可以有这方面的一点概念其网址为 http://wap.colorline.no/demos.html 或者到 http://wap.colorline.no/wap-faq/apps/anim.html 当在执行这样的动画方式的时候,要记住微型浏览器的内存是有限制的不可能将所有的__都装入到内存中浏览器也不会装入那些过大的__,因此某些动画可能在装入的时候就中断了 演示程序xmlversion=
1.0 !DOCTYPEwmlPUBLIC-//WAPFORUM//DTDWML
1.1//EN\ http://___.wapforum.org/DTD/wml_
1.
1.xml !--CodewritteninMicrosoftNOTEPAD.EXE.cEspenLyngaas2000ColorLineASA-- wml cardid=i__ge1ontimer=#i__ge2 timervalue=10/ p imgsrc=anim
1.wbmpalt=Anim1/ /p /card cardid=i__ge2ontimer=#i__ge3 timervalue=10/ p imgsrc=anim
2.wbmpalt=Anim2/ /p /card cardid=i__ge3ontimer=#i__ge4 timervalue=10/ p imgsrc=anim
3.wbmpalt=Anim3/ /p /card cardid=i__ge4ontimer=#end timervalue=10/ p imgsrc=anim
4.wbmpalt=Anim4/ /p /card cardid=endtitle=TheEnd p Thisistheendoftheani__tionbutyoucan anchorrunitagain. gohref=#i__ge1 /go /anchor /p /card /wml 如果使用PHP,可以看看更简单的程序 headerContent-type:text/vnd.wap.wml; echoxmlversion=\
1.0\\n; echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\\http://___.wapforum.org/DTD/wml_
1.
1.xml\\n\n; echo!--CodewritteninMicrosoftNOTEPAD.EXE.cEspenLyngaas1999ColorLineASA--\n; wml for$card=1;$card5;$card++{ echocardid=\i__ge.$card.\ontimer=\#i__ge.$card+
1.\n; echotimervalue=\10\/\n; echop\n; echoimgsrc=\anim.$card..wbmp\alt=\Anim.$card.\/\n; echo/p\n; echo/card\n; } cardid=i__ge5title=TheEnd p Thisistheendoftheani__tionbutyoucan anchorrunitagain. gohref=#i__ge1 /go /anchor /p /card /wml
10.如果WBMP__看起来糟糕极了,该怎么办? WBMP只有两种颜色,要是__漂亮需要一定的技巧但是可以减少__的颜色这里有一个叫做Floyd-Steinberg的方法可以做到这样的一个程序是JascPaintShopProPaintShopPro的__不是很贵,而且有直接保存为WBMP的插件还可以使用30天免费版本
11.能够生成动态的WBMP图像吗? 当然可以使用PHP、ASP或者Perl来完成这可能需要一种图像转换工具,因为服务端的脚本语言不支持WBMP的转换 下面有一个PHP的例子来说明使用脚本语言来完成的过程 因为当前版本的GD不再创建GIF图像,而是称作PNG(PortableNetworkGraphics)图像所以使用当前版本的PHP,只需要修改少量的代码就可以将GIF转换到PNG另外,可以用“DuPont’sI__ge__gick”将PNG或者转换成WBMP,它能在两者之间相互转换,并适合于多种平台 在代码里,笔者用到了PHP功能 I__geCreateFromGif,要输一些文本到GIF图像上,可以使用PHP的I__geGreate创建一个空白的GIF/PNG图像 以下是代码 //hardcodedvariablesaresafer!//pathtoblankGIFfile–notreallyneededseeabove $blank=./wapclock_blank.gif;//Youcanlookatithere//pathtoinputfilegeneratedbyPHP $input=/tmp/wapclock.gif;//pathtotemporaryoutputfile.Extensionisirrelevant $output=/tmp/wapclock.out;//pathtoI__ge__gickconvert $convert=/usr/local/bin/convert; if$for__t==gif{//ifit’sGIFsendthatContent-type headerContent-type:i__ge/gif; $type=GIF; } else{ if$for__t==wbmp{//ifit’sWBMPsendthatContent-type headerContent-type:i__ge/vnd.wap.wbmp; $type=WBMP; } else{ //hopethatthebrowsercanreadthis headerContent-type:text/plain; //orsomeoneforgottosetthefor__tvariable $type=; } } //turnoffcaching headerExpires:Mon26Jul199705:00:00GMT; headerLast-Modified:.gmdateDdMYH:i:s.GMT; headerCache-Control:no-cachemust-revalidate; headerPrag__:no-cache; //createaGIFfilefromanemptyGIFfileseefaq $im=i__gecreatefromgif$blank;//putthecurrenttimeintothetimevariable $time=dateH:m:s;//Pla__timevariablesortofinthemiddlewithfontsize4 i__gestring$im4615$time0;//generateaGIFfilewithPHPseefaq I__geGif$im$input;//emptytheGDtemporarybuffer I__geDestroy$im; ifstrlen$type0{//ifthetypeisknown//dotheconversion exec$convert..$input..$type.:.$output; } else{//ordonothing echoUnknownfor__t!\n;//andstop exit; } //opentheconvertedfile $fd=fopen$outputr;//readverythingintoavariable $contents=fread$fdfilesize$output;//closethefile fclose$fd;//pouroutthecontents echo$contents; 以上的代码是输出GIF的WBMP数据流为了使用真正的图像,必须像下面这么写 headerContent-type:text/vnd.wap.wml; echoxmlversion=\
1.0\\n; echo!DOCTYPEwmlPUBLIC\-//WAPFORUM//DTDWML
1.1//EN\\http://___.wapforum.org/DTD/wml_
1.
1.xml\\n\n; echo!—CodewritteninMicrosoftNOTEPAD.EXE.cEspenLyngaas2000ColorLineASAà\n; wml cardid=wapclocktitle=WAPClock dotype=prevlabel=ReloadI__ge gohref=echo$PHP_SELF/ /do p imgsrc=http://wap.colorline.no/wap-faq/apps/gfxclock.htmlfor__t=wbmpalt=Youshouldseeani__ge…/ /p /card /wml
12.针对多大的屏幕进行__? WAP设备的显示状况千差万别,有些支持图形,有些只支持文本下面给出一些型号的屏幕尺寸Mitsubishi还没有公布的WAP__有3行12个字符的显示器Nokia7110的屏幕是96个像素宽,65个像素高,最大的显示图像是95个像素宽,45的像素高,高和宽的比例大约是
1.25因此一个正方型应该是一个实际宽高比为1:
1.25的长方形,对于圆来说也是一样 EricssonsR320有一个类似大小的显示屏幕精确的大小是101像素宽,52像素高可以显示4行文本,而且自动换行是默认的方式 EdChew(Ed.Chew@scoot.co.uk)检验过“R380DesignGuidelineforWAPServi__s”,并且发现在EricssonR380有360x120像素的分辨率(83x28mm),
0.23点距,浏览区域是限制在310(宽),100(高)pixels ,包括顶部的两个像素的空格,左边和右边的三个像素的空格,因此实际上只有304x98像素 为了弄清显示器到底有多大的大小,在http://wap.colorline.no/demos.html(选择“Resolution__trix”)有一个分辨矩阵的演示程序页面将显示三个不同大小的图像,一个垂直和一个水平,它们是一个方向上十个像素,另外一个方向上只有一个像素,这样你马上就能知道屏幕到底有多大另外他们的大小是80x80,100x100和120x120像素,因为有些浏览器不能装载那些过大的__ 由于有些显示器的点是长方形的,而不是正方形的,所以__人员需要重新影射图像,让他们看起来像正方形,圆看起来像圆但笔者不推荐这个方法,除非你知道用户所使用的WAP设备的真正比例一个在7110上看起来很好的图到了R380上会很糟糕
13.在WML中可以预先装入__吗? 在HTML中,__可以先使用简单的J__aScript来装入但是在WML或者WMLScript中没有这样的方法PaulSt.George(e__il@paulstgeorge.com)提供了一种欺骗浏览器,让它装入__但不显示的办法对于__,如果足够小,可以事先读入到WAP的Cache中如果所有的图像都能够装入的话,就不需要连接到服务器上了 首先需要一个能够撑满屏幕的透明__,因此它们是一个像素宽,并且和显示屏幕具有相同的高度将__做成透明的,这样它将占据整个屏幕,然后装载剩下的__,等__装载完后timer启动,开始动画 在下面的例子中,可能需要改变一下timer的数值,让它有时间来装入__wml cardid=pontimer=#f1 !--Adjustthistimertotaste.-- timervalue=10/ palign=__nter imgsrc=spa__r
1.wbmpalt=x/ /p p imgsrc=
1.wbmpalt=1/ /p p imgsrc=
2.wbmpalt=2/ /p p imgsrc=
3.wbmpalt=3/ /p p imgsrc=
4.wbmpalt=4/ /p p imgsrc=
5.wbmpalt=5/ /p /card cardid=f1ontimer=#f2 timervalue=10/ palign=__nter imgsrc=spa__r
15.wbmpalt=x/ /p palign=__nter imgsrc=
1.wbmpalt=1/ /p /card cardid=f2ontimer=#f3 timervalue=10/ palign=__nter imgsrc=spa__r
10.wbmpalt=x/ /p palign=__nter imgsrc=
2.wbmpalt=2/ /p /card cardid=f3ontimer=#f4 timervalue=10/ palign=__nter imgsrc=spa__r
08.wbmpalt=x/ /p palign=__nter imgsrc=
3.wbmpalt=3/ /p /card cardid=f4ontimer=#f5 timervalue=10/ palign=__nter imgsrc=
4.wbmpalt=4/ /p /card cardid=f5ontimer=#f1 timervalue=10/ palign=__nter imgsrc=
5.wbmpalt=5/ /p /card /wml
14.___有些WBMP无法显示? 图像可以使用img标签来指示大多数无法显示的情况是因为错误地使用了img语法这个标记至少要有src和alt两个参数其他参数是可选的src指定图像的来源,alt指定当图像不能显示的时候显示的内容,并且在最后有反斜杠结尾 imgsrc=path/filename.wbmpalt=AlternativeText/ 如果页面是由HTTP服务器提供的,服务器也必须设置WBMP正确的MIME类型正确的类型是“i__ge/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设备 少数__,或者像__的设备(“WAPServers”)在内容提供商那边,这些人拥有WAP内容服务器
2.什么是WAPServer? 除了集成的WAPGateway,WAPServer不比普通的WebServer多太多笔者个人认为“WAPserver”这个概念非常混淆许多人认为必须有一个WAPServer才能提供WAP的内容,但是这不正确WAP内容可以由任何普通的WebServer提供 那么WAPServer的要点是什么呢?当讨论到WAP的安全性的时候,WAPServer可以减少WAP环境中的安全漏洞 既然WAPServer包含一个__,因此可以跳过__在__营运商那边的第三方__,并且主机上的应用程序对加密数据流有完全的控制能力 注意如果要让用户能够访问__,就需要正确的配置他们的WAP设备,大多数情况下是手工配置
3.在哪儿可以得到WAP__? Nokia的__可以在http://___.nokia.com/corporate/wap得到
4.WAP__是一个像Server那样的物理设备吗?它是在Internet提供商还是__提供商那边? WAPGateway是一个WinNT或者Linux机器上运行的WAPServer软件它可以在Internet上的任何位置,既可以在Internet提供商那边,也可以在__提供商那边,还可以在用户的PC机上
5.__NokiaWAPToolkit后如何设置__,拨号等等,以便可以使用用户的主页? 启动NokiaWAPToolkit,找到MenuToolkitPreferen__s选择“UseWAPgateway”选项,给出WAP__所在的地址(
127.
0.
0.1,如果在本机运行__程序)用户可以从MenuGoLoad中指定URL
6.哪个公司提供WAPServer的源代码? opensour__gateway在http://___.kannel.org/中提供
7.可以在广域网络中使用__吗? 只要能通过拨号访问到__的IP地址,在哪儿都是一样
8.在哪里能找到有关__的资料? 在很多情况下用户可能想使用多个__来测试应用程序因为他们以不同的方式工作所以可能需要连接到其他的__,而不仅仅使用由__营运商提供的__ WAPdrive.net有一个个非常好的公共__列表 http://___.wapdrive.net/DOCS/wap_gateways.htm 这里面有一些没有公布的__如果IP地址以“
10.”开头,那么__就是私有的,是营运商自己的其他IP地址的__,也不一定就是公共__
9.___HTTPUser_Agent字符串在Phone.com的__中有所不同?如果查看从Phone.com的UP.Link__发送给服务器的HTTP头,将发现User_Agent有所不同UP.Link__将名字和版本名称写在这里面 如果用户来自Nokia或者爱立信的__,那么User_Agent就像下面的 EricssonR320/R1A 如果用户来自UP.Link__,就如同下面的 EricssonR320/R1AUP.Link/
4.
1.
0.1 它们清楚地显示了__的类型和版本从这里可以清楚的知道用户所使用的__类型和版本
七、关于WAP浏览器的常见问答
1.什么是微型浏览器? 类似于PC上的InternetExplorer或者NetscapeinterpretHTMLWAP微型浏览器的地位等价于一个在手持设备上运行并解释WML的软件
2.在____上,WML最大可以是多少? 这个根据不同__而不同只要保持编译后的页面不要超过1400字节就可以了
3.WAP客户端上运行的是什么操作系统? 只要客户端有WML微型浏览器,任何操作系统都可以目标设备可以使用Windows__、EPOC、PalmOS或者其他合适的操作系统
4.WAP用户代理可以Cache页面吗? Nokia7110可以Cache页面Cache的大小在40k左右
5.哪儿有更新的代理列表资源? 如何测试浏览器的方法在以上的文章中有讲述因此现在是需要一个很大的代理列表这个列表将帮助检测浏览器的类型 这个文件是使用逗号分隔(Com__SeparatedValues)的格式第一行是浏览器的名字,第二行是浏览器的描述 UserAgentID在http://wap.colorline.no/wap-faq/useragents.php3(注意这个文件是一个简单的ASCII文件,虽然它是以.PHP3结尾) 这个文件可以随便拷贝
6.能不能通过浏览器语言的选择来本地化文本? 作为任何一个好的HTML浏览器,应该可以阅读由WAP设备配置的语言而不依赖于Web服务器向它发送了什么样的HTTP头许多设备都这样 HTTP头中有一个Ac__pt-Language,可以包含多种语言,使用逗号分开每个标识有两个基于ISO-639的字符代码例如en代表English,no代表Norwegian等等想了解更多关于Ac__pt-Language请参考HTTP
1.1Referen__,section
14.4所有的语言代码可以查阅ISO-639 下面的PHP代码显示了如何读取Ac__pt-Language头,并选择语言这段代码很容易就能转成其他代码,其基本原理就是读取Ac__pt-Language中的前两个字符,然后依据这两个字符选择语言wml cardid=loctitle=LocalizedText p switchsubstr$HTTP_AC__PT_LANGUAGE02{ caseen: echoYourWAPdevi__isconfiguredforEnglishlanguage; break; caseno: echoDinWAP-dingserkonfigurertforNorskspr錵; break; casesv: echoDinWAP-sak鋜konfigureradf鰎Svenskspr錵; break; default: echoIh__enoideawhatlanguageyourWAPdevi__isusing..; } /p /card/wml
7.每个WAP设备的浏览器的功能和限制是怎么样的? 所有的设备都应该遵循WAP协议,当前是WAP
1.1和WAP
1.2,但是真实的世界不是那么简单随着WAP的进化,WAP设备__者将尝试推动WAP协议的封版这就让__者的生活更加有意思,但是同样也保证了技术快速的发展 许多设备都无法完全遵循协议,虽然在许多情况下这种差别不是很大同样有些设备还增加了一些WAP__者需要的特别功能 有关协议的最好资源是在AnyWhereYouGo你会发现它有关于WAP设备的列表非常有用如果用户发现某些特殊的设备,也请将数据加入到AnyWhereYouGo的数据库当中
8.不同的的__应该使用哪个UP.browser版本? Phone.comDeveloper站点有这样一个列表但是必须注册后才能得到这个列表
9.在哪儿可以下载Microsoft的MobileExplorer? 现在知道的只有BenefonQ和SonyCMD-Z5使用MicrosoftMobileExplorer但是在Sony的站点只有一个简单的FlashBenefon的支持要好的多,可以去他们的__区看看 MicrosoftMobileExplorer可以在注册之后下载
10.MicrosoftMobileExplorer有什么特别的地方 MicrosoftMobileExplorer或者MME是一种双模式的浏览器,他可以接受HTML和WML代码这就产生了一个新的问题当内容既可以使用HTML也可以使用WML的时候,如何选择呢?其实这个已经不是新问题,像Opera浏览器基本上是一个HTML浏览器但是支持WML但是MME没有将数据类型使用正确的顺序例如HTML比WML优先如果浏览器检测代码是没有问题的,就应该没有问题 经过对MME模拟器长时间的测试,笔者发现每个人都在使用错误的浏览器检测代码许多看起来可信的事实“Mozilla”意味着是HTML浏览器,例如Netscape或者InternetExplore其实有很多HTML浏览器不使用“Mozilla”来表示相反它们询问浏览器可接受的数据类型另外MME模拟器不支持文本的WML,只支持编译后的WML(WMLC),它需要一个(象其他的WAP设备)__来将WML转换成WMLC MME同样支持JPEG和GIF格式和WBMP另外,MME发送HTTP头中有一个HTTP-DISPLAY-AREA来告诉内容提供服务器的屏幕大小 MME通过UserAgent来表示自己为Mozilla/
1.22兼容的设备完整的MME模拟器字符串是Mozilla/
1.22(compatible;MMEF20;__llPhone) 当使用MME模拟器,记住它有两种工作模式它直接告诉内容服务器,要么接收HTML,要么接收编码的WMLC如果想直接使用文本WML,用户必须告诉MME__的位置在这个模式下所有的WAP请求通过WAP__来处理,然后MME才能接收文本WML
11.能不能在浏览器中改变字体?在很多情况下是不行的许多浏览器支持标签来改变字体的为黑体、斜体或者大小但是字体的类型是不会改变的到现在还没有看到这样的浏览器出现,也没有这样的WML标签出现 但是Morpheme却做到了一种在线的办法来改变字体,叫做“Dwbmp”,这实际上是使用文本书写的方式来制作和使用WBMP__这个工具是免费的,现在它支持六种不同的字体 另外只有少数的设备支持图像anchors(例如Nokia7110),因此不能使得WBMP像文本一样可以链接 对于那些使用PHP或者其他服务器端脚本语言的可以使用GD来支持,将TrueType字体甚至是Postscript转换成WBMP
八、关于WAP__的常见问答
1.怎样配置__才能浏览到Internet 一般来说您可以先参考__的使用说明书来进行配置在__配置当中有几种典型的WAP__配置的详细说明
2.市场上有哪些WAP__? 目前有Nokia7110,EricssonR320,MotorolarL2000___等等随着时间的推移会有大量的新款WAP__推出一般来说大屏幕,高分辨率并且具有中文显示和输入的WAP__在浏览WML网页的时候效果比较好
3.是不是所有的__都能执行WAP
1.1的标准,还是各有各的特性? 所有的WAP__应当支持WAP
1.1,但是有些__有自己不在WAP协议之内的特点
4.国内有这样的__卖了吗? 国内市场上已经有很多种WAP__但是国内还没有生产WAP__
5.这样的__大概需要多少钱? 这样的一部__一般在2000元左右为了使更多的人加入到WAP中来,以后__还要降价
6.若WAP__要上网,需要申请那些服务? 如果要用WAP__上网,首先必需开通一般的通话服务、短消息服务、数据服务当以上服务都申请好后,再进行上网设置__
7.如何使用WAP服务? 首先,必须要有WAP__,如Nokia
7110、EricssonR320等型号;其次,必须向__业者申请WAP服务(目前国内开户费200元,月租50元)
8.如何在Nokia7110里面输入URL? “/”符号可以通过按“*”,其他符号可以滚动到与其配的符号找到
9.在哪儿可以得到现有的WAP支持设备? AnywhereYouGo.com有一个完整的WAP设备列表 http://___.anywhereyougo.com/wap/devi__s/Index.po
10.在__WAP__之前应当考虑哪些问题? 在考虑__WAP__之前应该考虑以下问题在现在的市场上只有几种类型,例如流行的Nokia7110和EricssonR320;既然WAP是新技术,其产品肯定还不是很成熟(可能会有Bug);__不可能支持所有的WAP
1.1功能;WTA功能目前还不支持
11.浏览WAP站点的时候还能接收或者____吗? 当然数据和声音使用不同的线,并且你在浏览的时候无须担心来电对于拨号,请检查7110的“UserNumber”功能
12.____上网时是按照时间收费还是按照流量收费? 这要看____基于CSD还是__S信道使用__S信道,只需要为传输的数据付费,如果你使用的是CSD信道,则需要按照时间付费
13.___需要指定拨号号码和WAP__? __号码是拨号到ISP上所使用的__号码,IP地址是指定__如果没有指定__,WAP设备将无法连接到Internet网络
14.可以通过改变7110的设置来发送__S短消息吗? 可以可以通过设置一个叫做OTA(OverTheAir)来发送__S短消息
15.Nokia7110的上下文Cache是多大? 大约是40k
16.Nokia7110的操作系统可以升级到v
04.77吗 是的7110的系统可以升级,但只能在Nokia的服务点做到这可能删除你现有的__本
17.无法在7110上显示表格数据什么问题? Nokia7110不支持多列的表格,因此你要把任何表格转换成单列的表格
18.有没有一个WAP__和设备的列表? 注意这里的列表是目前的状态里面有些信息不一定正确 AnyWhereYouGo有一个很好的WAP设备列表(见表10-9),包括phones和PDAs(许多信息都直接来自制造商)表10-9WAP设备列表AlcatelOneTouchViewdbWAPPhone http://___.alcatel.com/consumer/mobilephone/view_dbwap.htmAlcatelOneTouch30xSeriesPhone预计2000年9月http://___.alcatel.com/consumer/mobilephone/AlcatelOneTouch50xSeriesPhone预计在2000年10月http://___.alcatel.com/consumer/mobilephone/AlcatelOneTouch70xSeriesPhone预计在2000年11月http://___.alcatel.com/consumer/mobilephone/AlcatelOnetouchViewPhone http://___.alcatel.com/telecom/mbd/products/products/detailed/g__/ot_view/index.htmSiemensS35iPhone http://___.siemens.com/mysiemens/english/mobile/index.htmlSiemensM35iPhone http://___.siemens.com/mysiemens/english/mobile/index.htmlSiemensC35iPhone http://___.siemens.com/mysiemens/english/mobile/index.htmlSiemensS25Phone只支持HDMLhttp://___.siemens.se/telefoner/mobiltelefoner/s25/SonyCMD-Z5Phone支持WML和HTMLhttp://___.sony-europe.com/com/z5/index.htmlNokia7110Phone http://___.nokia.com/phones/7110/index.htmlNokia6210Phone http://___.nokia.com/phones/6210/index.htmlNokia6250Phone还没有投放市场http://___.nokia.com/phones/6250/index.htmlNokia6185Phone只在美国市场上有http://___.nokiausa.com/beauty/1100228FF.htmlMotorolaLeapP73__Phone http://___.motorola.comMotorolaTimeportPhone http://___.motorola.comMotorolaTalkaboutPhone http://___.motorola.comMotorolai1000plusPhone只适用于iDENhttp://___.motorola.comMotorolai500plusPhone只适用于iDENhttp://___.motorola.comEricssonMC218Palmtop http://___.ericsson.se/WAP/products/mc_
218.shtmlEricssonR380Phone http://___.ericsson.se/WAP/products/r
380.shtmlEricssonR320Phone http://___.ericsson.se/pressroom/r320a.html3ComPalmPilotPalmtop需要浏览器软件http://___.palmpilot.com/Neopoint1000Phone http://___.neopoint.com/products/index.aspNeopoint1600Phone http://___.neopoint.com/products1600/index.aspSagemMC850Phone还没有投放市场http://___.phone.com/news/Archive1999/031__9_SAGEM.htmlSamsungDuetteSH-P10Phone只适用于CD__http://___.phone.com/solutions/allian__s/samsung.htmlSamsungSGH-800Phone还没有上市http://___.phone.com/solutions/allian__s/samsung.htmlMitsubishiT250Phone只适用于CD__http://___.mobileac__ssphone.com/products/index.htmCompaqAeroPDAWindows__WAP
1.1微型浏览器http://___.compaq.com/products/handhelds/QualcommQCP-860Phone只适用于CD__http://___.qualcomm.com/cda/technology/display/
0159500.htmlQualcommQCP-1960Phone只适用于CD__http://___.qualcomm.com/cda/technology/display/
0159500.htmlQualcommQCP-2700Phone只适用于CD__http://___.qualcomm.com/cda/technology/display/
0159500.htmlQualcommQCP-2760Phone只适用于CD__http://___.qualcomm.com/cda/technology/display/
0159500.html
九、关于WAP安全的常见问答
1.WAP提供怎样的安全性? WAP
1.1支持无线传输安全协议(WirelessTransportLayerSecurity)WTSL和Internet的SSL类似,具有许多重要的加密功能,但在客户端只需要较低的运行能力 WAP__能从网上接收SSL加密的消息并把这些消息转换成WTSL加密的信息传给__设备,这种转换消耗的时间按毫秒计算WAP__的主要作用就是在两种协议之间建立一个虚拟的安全转换连接 __设备和服务器之间存在有两个安全问题一个是从__设备到__;另一个是从__到服务器WTSL是保证前者的安全通讯,SSL是保证后者的安全通讯如果__设备使用了不具有加密功能的SIM卡,即使在URL中申请使用SSL接口,在从__设备到__的过程中URL的申请仍然是显式的,也就是说是不安全的,窃听者可以通过截获空间散发的无线电波来窃取用户的口令和__
2.通过WAP的传输安全吗? 当然在____和WAP__之间使用WTLS(WirelessTransportLayerSecurity),__和WebServer之间使用SSL(SecuredSocketsLayer)就可以
3.WAP如何同SSL与WTLS工作? SSL(SecureSocketsLayer)在“web”中广泛用来在浏览器和服务器之间加密数据流这同样也适用于WAP环境,但是SSL只用在WebServer和WAP__之间在WAP__和WAP设备之间,有一个类似系统叫做WTLS(WirelessTransactionLayerSecurity)WTLS是专门适合于无线环境的 安全是一个非常敏感的问题,虽然没有任何一个系统是绝对安全的,但笔者认为SSL和WTSL对于很多应用是足够安全的这两个协议在WAP__中相互转换 SSL并不直接兼容WTLS,因此WAP__要解密从WebServer过来的SSL保护数据流,然后使用WTLS加密发送给WAP设备在WAP__中,数据是没有保护的 模型如下 | | [WAPdevi__]------------[WAPgateway]-----------[Contentserver] ---WTLS---{unprotected}---SLL--- | | Firewall| |Firewall 想象一下如果银行或者其他机构使用公开的WAP设备,处理一些敏感的数据当数据离开用户的系统和网络的时候,它们是受到保护的但是在进入WAP__之后(__是由第三方操纵的,例如__营运商)数据被解密虽___所有的__营运商都是危险的,但是将敏感数据暴露给不知道的第三方是很不让人放心的任何一个营运商的问题将是所有营运商的问题 主要的WAP公司都在__一种称做“WAPServer”或者是具有WAP__的Web服务器来解决端到端的问题因为数据离开服务器(“WAPServer”)的时候就已经是WTLS加密 模型如下 | | [WAPdevi__]------------------------------------[WAPserveractingasWAPgateway] ---------------WTLS--------------- | | Firewall| |Firewall 这样WAP__就不再是整个过程中的一个环节那么用户必须重新配置它们的WAP设备来指向“WAPServer”来建立相应WAP会话当用户想访问其他地方的时候,又必须配置来指向其他的__虽然有的WAP设备比较好配置,但是有些却非常困难,这多少有点烦人 除了以上的问题,实际上许多__营运商将端到端的服务器放在用户拨号到Internet的地方他们的WAP__具有同样的私有的IP地址,通常是在一个防火墙后面这个防火墙通常只允许使用HTTP协议的80端口WAP__使用这个端口来接受从内容服务器来的数据,那也是他的真正需求当WAP设备试图访问其他的__的时候,那么防火墙就将停止他们的操作,要么因为是WAP设备IP是不允许在Internet__问其他的设备,要么是无法打开所需求的端口这样__营运商就有效地阻止了用户使用其他的__ 有一些关于WAP安全方面的内容,请看WapforumsWTLS协议BaltimoreTelepathy安全讲解Tantau关于安全的文章《AnIntroductiontoWMLProgrammingandThird-_____WAPToolkits》Phone.com关于无线安全的文章《UnderstandingSecurityontheWirelessInternet》
十、关于WAP其他方面问答
1.在哪儿可以下载Phone.com的UP.SDK Phone.com的UP.SDK可以在注册之后下载
2.如何在Win2000上__NokiaSDK? JohannesHerbst(johannes_herbst@bwc.at)提供了一个快捷的方法来解决Win2000的__问题从Win2000的__光盘__Win2000的支持工具(\support\tools\setup.exe);找到一个叫做APCOMPAT.EXE的文件;启动APCOMPAT并设置OS-version为NT4SP3并运行;启动NokiaSDK__文件;在解包以后,程序将挂起很长一段时间;从Win2000的Task__nager中强制结束setup进程; NokiaSDKsetup将正常继续
3.哪儿能下载NokiaSDK? NokiaSDKv.
2.18是一个非常好的7110模拟器,但是Nokia对它采取了相当的保密措施其他的设备厂家,Phone.com和Benefon只要简单的注册就可以得到Nokia只允许__者使用NokiaToolkits,而这些版本很难和WAP环境搭配 NokiaWAPSDK很难找到,每次找到了,它就消失了 当前笔者知道它在http://___.bwl.uni-__nnheim.de/~broeker/software.htm
4.NokiaSDK的基本验证是怎么回事? 基本验证好像是后加入到软件中的,并没有考虑将WAP模拟器和工具包形成产品基本验证已经肯定要加入到真正的Nokia7110以及防火墙软件
4.73或者更高
5.除了使用NokiaWAPToolkit模拟器还有其他工具吗? NokiaToolkits模拟器的模拟效果与真的Nokia7110相差较大应该使用NokiaSDK2最新的版本是v.
2.18这个SDK包含了最好的7110模拟器和其他一些有用的工具和一些真实的例子
6.___Nokia7110不能POST超过160个字符? 有一些版本的Nokia7110浏览器不能POST超过160个字符的变量在实际中,似乎有一个内容长度的限制,大约在170~180之间从另外的角度来说,变量的名字和它们的内容算在一起如果只POST一个叫做“A”的变量,那么这个变量只能包含大约160个字符的内容如果有好几个变量,如有一个名字叫做“thisishenameof__erylongvariable”的变量,那么包含的内容将更少 但是有一个解决方案,那就是要求__重新配置在ConnectionSettings菜单,找到一个叫做Connetiontype,把它设置为Continous,那么将发送更大的变量内容 如果想知道GET或者POST能发送多大的内容,请看有关GET和POST的FAQ
7.运行NokiaToolkit需要__什么版本的J__a包?只需要J__a
1.2环境如果想运行100%纯的环境,例如在Linux下,还需要一个J__aXML解释器
十一、关于WAP站点建设的常见问答
1.WAP__需要那些硬件设施? 如果仅仅是想作为WAP服务提供商,那么WAP的硬件设施和___服务的硬件设施完全一样,只需要对以前的___做适当的配置就可以应用于WAP服务当然,也可以去__专门的WAPServer专用的WAP服务器可以集成许多其他功能模块,例如WAP安全性、PUSH功能等
2.WAP的安全性如何? WAP堆栈中的一层,称为WTLS,提供加密和效验的服务-客户端安全这个防止了网络上的舞弊,为电子商务和Interanet开通了道路
3.应该如何配置自己的Web服务器使它能够支持WAP?在服务器端加入以下配置.WMLtext/vnd.wap.wml.WMLCpplication/vnd.wap.wmlc.WMLStext/vnd.wap.wmlscript.WMLSCapplication/vnd.wap.wmlscriptc.WBMPi__ge/vnd.wap.wbmp
4.要为WAP设备提供WML内容应当做些什么? 最简单的提供WML内容的方法是使用一个好的HTTP服务器,笔者推荐Apache如果想生成动态的内容,笔者推荐一个叫做PHP的服务端脚本语言这样既能够书写服务端的HTTP程序适合HTML浏览器,也能够书写WAP程序适合WML浏览器 只有WAP站点能够连接到__网络的提供商,用户才可能在__上通过输入URL来访问它既然___已经变成一个标准的名字,wap好象也在变成一个标准例如“wap.do__in.com” 一个非常重要的事情就是要记住让HTTP服务器告诉WML浏览器,它接收到的是一个WML页面,而不是一个HTML页面,这个可以通过配置MIME来完成
5.如何配置现有的Apache
1.
3.9Web服务器使它能提供WML服务? 需要配置正确的MIME类型 text/vnd.WAP.WMLWML text/vnd.WAP.WMLscriptWMLs i__ge/vnd.WAP.WBMPWBMP application/vnd.WAP.WMLcWMLc application/vnd.WAP.WMLscriptcWMLsc
6.如何在PWS4下加入MIME类型? 可以通过“WindowsExplorer-FoldersOption-FileTypes-NewType;”直接增加可选择的mime.type文件 对于PWS,还可修改注册表,先在HKEY_CLASSES_ROOT层加入主键.wml,再加入串值ContentType为text/vnd.wap.wml,然后在HKEY_LOCAL___CHINE\Software\CLASSES\MIME\Database\ContentType\中加入主键text/vnd.wap.wml,再加入串值Extension为.wml
7.有哪些HTTP的相关MIME类型? 当使用基于PC机的浏览器操作一个“webpage”的时候“webserver”告诉用户的PC浏览器将接收到一个怎么样的文件类这个经常被称做文件映射MIME最常见的MIME类型是普通的HTML文件,叫做“text/html”但是对于WAP微型浏览器,它不能浏览HTML页面,MIME的类型也不同 服务于WML的MIME类型见表10-6表10-6MIME类型 文件类型MIME类型扩展名PlainWMLdocumentstext/vnd.wap.wml.wmlWirelessBit__pI__gesi__ge/vnd.wap.wbmp.wbmpCompiledWMLdocumentsapplication/vnd.wap.wmlc.wmlcWMLScriptstext/vnd.wap.wmlscript.wmlsCompiledWMLScriptsapplication/vnd.wap.wmlscriptc.wmlsc 为了将MIME类型加入到ApacheHTTP服务,可以按照下面步骤操作 1编辑srm.conf文件(通常在/etc/httpd/conf) 2定位在AddType区域,加入以下内容#MIMETypesforWAPAddTypetext/vnd.wap.wml.wmlAddTypei__ge/vnd.wap.wbmp.wbmpAddTypeapplication/vnd.wap.wmlc.wmlcAddTypetext/vnd.wap.wmlscript.wmlsAddTypeapplication/vnd.wap.wmlscriptc.wmlsc 3保存文件并重新启动ApacheHTTPd 如果你没有控制整个Apache服务器的权限,例如用户在一个ISP下面,可以加入一个叫做.htac__ss文件到每个放置WML页面的目录当服务器从这个目录读文件的时候它将根据.htac__ss文件的规则输出 一个典型的.htac__ss看起来如下DirectoryIndex index.wmladdtypetext/vnd.wap.wmlwmladdtypeapplication/vnd.wap.wmlcwmlcaddtypetext/vnd.wap.wmlscriptwmlsaddtypeapplication/vnd.wap.wmlscriptcwmlscaddtypei__ge/vnd.wap.wbmpwbmp 注意告诉服务器,index文件是index.wml同样要注意到服务器能够阅读这些文件在某些情况下服务器由于安全问题而忽略这些文件因此这些要同ISP协商(增加MIME类型到MicrosoftIISserver,也可以在WAP中的其他部分)关于其他服务器,请参看它们的文档
8.如何使用Nokia7110取得自己PC上的站点?需要本地的__商提供WAP服务吗?需要其他设备例如Modem吗?在哪儿能够访问自己PC上的WML页面? 使用自己的__看WAP站点,要按照以下步骤进行 __一个WebServer(例如IIS
4.0)并且将WML应用放在一个虚拟目录中,将PC连接到Internet注意机器的IP地址(当你使用拨号的时候,每次的IP地址可能不同)只需要网络营运商提供数据连接 使用WAP__,例如Nokia7110或者EricssonR320拨号到ISP记住自己的PC已经拨号到ISP有的ISP只允许一次一个连接,有的允许多个这个要根据实际情况来确定 输入机器的IP地址和虚拟目录的名字,例如 http://x.x.x.x/virtual_path/somepage.WML 使用一个公共的__的IP地址,例如Ericsson 现在就可以拨号,并激活以上设置
9.如何使用WinNT
4.0上的RASServer与Nokia7110相连接? 需要一个WAP__,并且在自己的服务器上配置MIME类型将__设置成WebServer,再使用__拨号就连接上了(这要求必须有一个配置好的RAS帐号)
10.有一个需要Login的WAP站点,有没有办法避免每次让用户重复输入用户名/__?可以使用__的SIM卡来确认用户吗? 现在还不可能通过WAP在SIM卡中保存数据,也不能使用__号码来确认用户从安全的角度来讲,也必须让用户输入用户名和__,提交后标记结果页给用户这样一个URL标签http://___.website.com/login.aspuser=billpass=secret
11.已经有一个Web站点,如何建立一个WAP站点? 首先要明白这个文件是给那些的确已经拥有Web站点的公司,而现在想转到WAP上来不是指那些__者或者普通的用户强力推荐《__kingexistingwebcontent__ailabletothemobileInternet》文章在wap.com
12.如何绕过营运商,直接连接到Internet 如果认为一个营运商不允许访问其他的WAP资源,或者用户只是由于__目的想绕过营运商,有很多WAP设备可以让做到这一点 不同的WAP设备有不同的工作方式,但是你应该能勾勒出整个框架 首先需要一个本地的InternetServi__Provider的__号码它使你能够通过普通的拨号连接到Internet其实许多ISPs提供很多免费的拨号连接ISP不一定是本地的,要有给__营运商付费的准备ISP需要支持PPP协议,可以使用userid和password同ISP建立连接,然后需要一个公共__(见表10-7)的IP地址表10-7一些公共__提供商IP地址__类型Ericssonhttp://___.ericsson.com/
195.
58.
110.201EricssonwapHQhttp://___.waphq.co.uk/
212.
1.
130.132wapHQGateway 用户要使用__号码、useri、password和IP地址配置自己WAP设备以Nokia7110为例,在Servi__sSettingsConnectionSettings中进行配置Nokia7110使用__S信道作为缺省的,需要将它改为Data,同样要设置DataCallType和ConnectionTypes对于DataCallType需要选择ISDN并测试对于ConnectionType你可能选择Temporary并再次需要试验最后设置HomePage指向某个你知道的WAP设备你就可以拨号访问自己的WAP设备了
13.能不能建立一个WAP站点,但不使用真正的WAP设备? WML内容可以被任何微型浏览器或者用户代理所理解因为内容都是为WAP设备所写的,所以最好的阅读WML内容的方式可能是使用一个WAP设备模拟器但是这些应用程序都很大,而且需要其他的运行环境 表10-8列出了一些浏览器的模拟器和相关的信息表10-8浏览器的列表浏览器环境WAPJAG.DEhttp://___.wapjag.deInternetExplorerAUSystemsWAPBrowserhttp://___.wapguide.com/wapguide/browser.htmlPalmOS
3.3WinWAPhttp://___.slobtrot.com/winwap/index.htmWindows9x/NTWapalizerhttp://___.gelon.net/InternetExplorer/NetscapeFetchpagehttp://webcab.de/fetchpage.htmAnyHTMLbrowserWAP__nhttp://___.wap.com.sg/downloads/downloads.htmWindows9x/NTWAP__nhttp://___.wap.com.sg/downloads/downloads.htmPalmOS
3.1NokiaWAPToolkit
2.0Betahttp://___.forum.nokia.com/wapforum/__in/166681_1_30_2_
300.htmlWindows9x/NT+J__aPhone.comUP.SDKhttp://developer.phone.com/Windows9x/NTEricssonR380Emulatorhttp://___.symbian.com/epoc/r380wapemulator.htmlWindowsNT
4.0NokiaSDK
2.18http://wap.colorline.no/wap-faq/index.htmlpair=
06.001Windows9x/NTWappy’sWapviewhttp://wappy.to/InternetExplorer/NetscapeOpera
4.0http://___.opera.no/Standalonekick-assbrowserEzWAPhttp://___.ezos.com/Soft/EzWAP/EzWap.aspWindowsNT2000__andPocketPC
14.想建立自己的WAP营运服务该怎么做? 建立自己的WAP拨号服务系统是很简单的,在市场上有很多这种解决方案,从高端的CiscoAc__ssServers(AS5200)到低端的基于MicrosoftNTRemoteAc__ssServi__和NovellsNetwareConnect的软件解决方案 这也许要花费很多力气来解释如何__和配置这些系统但是这些的确都与WAP无关一个WAP设备只是从电脑上通过Point-to-PointProtocol(PPP)取得一个IP地址 如果已经有了一台装有MicrosoftNT
4.0和9600bits/s的Modem那么就可以直接建立一个简单的系统请看FergalMoran(962264N@knotes.kodak.com)的《ConfiguringyourNTservertoac__ptremoteconnections》 把这些设置移植到其他系统应该没有问题只要能拨号到Windows98Dialup-Networking,就可以拨号到WAP设备 注意WAP设备对IP的配置现在需要建立自己的内部WAP__和HTTP服务器或者只是使用公开的WAP__或者HTTP服务器
15.如何注册一个WAP域名? 其实WAP域名和Web域名没有什么区别如果你有一个Web站点,你同样有一个将该站点挂在Internet上的InternetProvider最常见的Web站点是___或者___.mydo__in.com,典型的WAP站点名是wap.mydo__in.com 当域名已经通过InternetProvider或者在其他公司注册之后(例如NetworkSolutions,你注册了一个mydo__in.com)一个Do__inNameServer(DNS)需要指定一系列在这个域名下的一系列的主机名字和地址DNS只是简单的将人们可读懂的文本地址转换成IP地址如果有一个Web站点,将至少有一个主机叫做___,它指向IP地址当某个人想访问站点的时候,DNS将被询问“具有域名是___.mydo__in.com的主机IP地址是多少?”,然后DNS回答IP地址,例如“
193.
143.
2.90”然后请求者使用这个IP地址来操作站点 为了将WAP主机加入到域中,只需要在DNS主机中增加一个叫做wap的主机任何请求wap.mydo__in.com将接收到WAP主机的IP地址 WAP主机可以和Web主机拥有同样的IP地址那就意味着该主机既提供Web内容也提供WAP内容因为Web浏览器接收HTML,WAP浏览器接收WML,Web服务器可以通过简单的脚本来判断浏览器的类型,并提供适当的内容因为___.mydo__in.com和wap.mydo__in.com主机的名字都指向同一个IP地址,所以WAP用户可以操作___.mydo__in.com,Web用户也可以操作wap.mydo__in.com毕竟文本主机名字是机器IP地址的代表 如果一个服务器为Web内容,另外一个为WAP内容,就需要使用Web名(___.mydo__in.com)指向WebServer,使用WAP名(wap.mydo__in.com)指向WAP内容服务器。