曙海教育集团论坛3G手机技术专区WAP平台开发 → WAP页面及技术规范FAQ


  共有6041人关注过本帖树形打印

主题:WAP页面及技术规范FAQ

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
WAP页面及技术规范FAQ  发帖心情 Post By:2010-12-6 11:12:37

因为手机内置的微浏览器各手机厂家并没有统一.存在大量的标准差异和技术差异.会导致通过手机对WAP的访问的成功率降低.为规范和统一SP的页面.保证其符合基本的技术规范.特回答以下问题.

什么是WML?
A:答:是WIRELESS MARKUP LANGUAGE(无线标识语言)的简称,是WAP规范的一部分,类似于编写网页HTML语言;它是XML基础上的标识语言,用于界定文字的格式、表现方式,屏幕的层次(‘deck’),和页与页(‘card’)之间的超链接。

现在支持的WML版本?
答:分为两种. 非OPENWAVE和OPENWAVE.其规范分别是WAP 1.1和WAP 1.3,可以在WAP 论坛上查到相应的WML版本

WML与XML有何不同?
答:XML语言由W3C制定的META语言,是为特定应用程序加入其它语言的一系列规则。XML不直接加密内容,而由XML规定的特定标识语言进行加密。WML完全遵循XML规则,是无线应用的一种特定语言,因此是XML其中一种应用。

WML语言分不分大小写?
答:分大小写,WAP 1.1版用小写标识符

页面应该采用何种DTD版本?
答:分两种

WAP 1.1 (非OPENWAVE)
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">

WAP 1.3 (OPENWAVE)
<!DOCTYPE wml PUBLIC "-//OPENWAVE.COM//DTD WML 1.3//EN"
                      "http://www.openwave.com/dtd/wml13.dtd">

现在WAP的页面大小可以多大?
答:不同的电话各不同,作为原则,应尽量编辑页面使之不超过1397字节.这非常重要.请注意

现在WAP的每一页的选项可以有多少?
答:由于WAP –GW的限制,OPEN WAVE的页面最好控制每页8个连接.非OPENWAVE可以有11个连接.

每一个连接的连接地址可以多长?
答:由于一些老的手机对连接地址的长度有限制.建议连接的长度在70个字节以内.

为什么一定对手机的按键进行控制?
答:做为一个服务商,必须在每个页面控制用户的访问行为.为手机的回退等按键是可以使用WML强行指定的.如果可以.请指定.

返回梦网首页的方式?
答:在你自己的页面最下端统一加入以下代码:
<anchor> <go href="http://wap.monternet.com"> </go>返回梦网首页</anchor>,剩下的事情会由WTBS来处理.它会将你的这个地址替换成一个标准的返回梦网的地址.如:
<go href="http://wap.zj.monternet.com/wml_test/”SESSION_ID”/wml_test/wap_jumpback"/>

现在支持的中文编码?
答:现在只支持UTF8编码.并要求在WEB SERVER输出的 HTTP HEAD信息中包含以下内容:content-type: text/vnd.wap.wml;charset=UTF-8.
或者在页面的<HEAD></HEAD>字段中加入:
<meta http-equiv="content-type" c/>

我怎么实现对页面在手机和WAP GW上的CACHE控制
答:尝试在页面的<HEAD></HEAD>中加入以下信息:
<head>
<meta http-equiv="Cache-Control" c forua="true" />
<meta http-equiv="Cache-Control" c forua="true"/>
<meta http-equiv="Cache-Control" c forua="true" />
</head>

WAP SERVICE 应该采用何种MIME?
WAP 1.1, 服务器端加入以下MIME类型:
 
Associated Extension MIME Type   
wml text/vnd.wap.wml   
wmlc application/vnd.wap.wmlc   
wbmp image/vnd.wap.wbmp   
wmlsc application/vnd.wap.wmlscriptc   
wmls text/vnd.wap.wmlscript   
wsc application/vnd.wap/wmlscriptc 

页面之间的参数传递如何处理?
答:如果可能.尽量不要使用POST直接传递参数.建议通过
HTTP://WAP.TEST.COM的方式通过URL传递参数.

WML SCRIPT支持吗?
答:支持.但建议尽量不要使用以上方法.会导致计费可能不完整.

系统现在支持的计费方式?
答:现在支持包月和按次两种方式,像铃声和图片类业务最好按次.角色扮演类游戏最好按包月方式和用户结算.

WAP FORUM是什么?
答:WAP FORUM是由多个会员组成的行业协会。它制定了WAP的标准。其主要目标为联合无线通信行业的各个不同领域的公司,保证产品的兼容性和行业的发展。WAP FORUM会员代表了占世界移动电话市场九成以上的制造商、覆盖用户超过一亿人数的营运商、主要的基础设施供应商,以及为无线通信行业提供解决方案的软件开发人员和组织。 请参http://www.wapforum.org/

SP的首页访问页面取不到规范里面指定的各参数
在这种情况下,大多错误是判断变量大小写出错造成的,因为变量是大小写敏感的;MISC向SP传回去的变量名为:
   MISC_SessionID
   MISC_ServiceID
对于MISC_SessionID和MISC_ServiceID,MISC的传递方式是通过URL参数直接传递;所以SP的程序应该使用GET方式进行读取

Provision 接口部分

无法正确读取MISC发过来的XML包内容;
往往是SP的接口程序在处理HTTP POST包内容的时候出错;如何读取包内容的代码,可参照不同语言的DEMO程序。
SP应该正确安装XML的SDK包,可以使用相关的SDK进行XML分析;不同语言有不同的SDK包;例如,asp需要安装msxml 3.0以上版本;c语言的sdk版本可以免费在网络上下载。
在程序调试中可以将取到的内容先存入到Log文件中,这样错误就很容易定位。

MISC系统无法判断SP程序返回的内容;
可能是因为SP接口程序容错性差,程序运行出错,返回了系统的出错页面,而非指定的XML格式。
或者接口程序返回了XML格式包;但是因为XML对语法要求很高,经常会误笔写错了某个元素造成的;
因此,最好可以参照DEMO进行Copy& Paste,减少误操作产生的错误。

部分Provision操作失败;
可能会MISC和SP之间的数据不同步或者SP的程序逻辑错误;
数据不同步往往也会造成上述错误信息;例如,在SP中已经用此用户的订购信息而在MISC中没有,则会在订购时,SP判断数据库中已经有订购信息,返回操作失败信息;在这种情况下,互相确定SP和MISC之间的数据状况,可以先同时做个数据初始化操作。
SP的程序逻辑错误造成上述错误信息;例如,必要只有被暂停后的服务才能被重新启动;否则应该返还出错信息。
调试过程中,可让局方的测试人员配合一起进行。

SSO接口部分

MISC系统没有反应,没有应答;
原因可能如下:
SSO URL出错;
因为MISC的SSO处理程序是个js的脚本文件,不要误写成.jsp文件了。
SSOIP鉴权没有通过;
MISC需要对SP发起SSO的接口程序作IP鉴权;因此需要跟MISC运维人员确定IP是否配置正确了。
SP的SSO程序的通信协议部分出错;
MISC和SP之间的SSO通信是使用标准的Http协议通信;SP的SSO程序使用POST方式发送到指定的URL上;如果POST的数据不对,则系统会返回一个404的提示信息,而非表明此程序不存在。
SP程序应注意在读取MISC返回SSO应答包的时候采用连续读取的方式,将所有的包全部读下后,断开连接。

MISC返回内容格式错误;
可能是XML包格式不对造成的;SSO的XML包格式程序部分可参考MISC发布的DEMO程序。往往XML的格式语法要求特别高,很容易出错,可以直接拷贝DEMO中的XML格式部分。

MISC返回SessionID过期的错误;
如果SP保持的SessionID超过了它的缺省有效时间短,则MISC系统将无法解析SessionID;在这种情况下,SP的接口程序应该导航用户到首页进行重新登录。

MISC返回SessionID或者ServiceID或者SPID或者SP_Passwd有误信息;
如果上述参数的格式有一个不对的话,均会造成返回失败信息。
SPID是SP的企业代码,9开头的6位数字串;
SP_Passwd是鉴权SP使用的;上述两个参数均需要与MISC运维人员确定;
SessionID和ServiceID是通过在页面GET变量读取。
SSO一般只返回MID,不返回用户的手机号信息。根据SP的特别要求可以开放返回用户的手机号信息
注意SessionID、ServiceID、MID都不是整数类型,而只是数字串,因此SSO的接口程序应该将上述变量类型其设置成字符串的类型。

我应该怎么设计我的接口程序流程部分?

SP的信息源的程序可以按照以下的流程进行:
SP的页面程序读取MISC系统发过了的参数;
程序从数据库中查看是否有SessionID和ServiceID的解析纪录?
如有,则比较其Sumtime是不是超过了Timeout时间;如果没有,则可以通过访问权限控制系统控制是否让这个用户访问这个页面;否则继续由程序向MISC发起SSO请求;取回SessionID的解析成MID;并将上述相关的解析关系存入到数据库中;并让访问权限控制系统根据MID来控制是否让这个用户访问这个页面。
SP的程序在每个事务的最后页面才发起ECHO请求;例如,用户注册填写流程的最后一个页面来发起ECHO;在查询请求的最后一个页面来发起ECHO;在游戏的最后一个页面来发起ECHO请求等。

SP的页面不能正常显示,但是使用浏览器直接访问其站点则显示正常。

此项出错信息是SP接入中遇到最多的错误,往往错误信息是以“SPID error,……”;其错误原因比较复杂,但是大体如下:
返回页面的http头里没有加上charset=utf-8的标志。
如果SP返回的页面没有指定UTF8编码格式,则往往页面返回会出现乱码。
在每个连接前没有使用绝对路径。
如果在每个连接前没有使用绝对路径,则WTBS无法对这个地址进行解析,点击后会出错。
页面中的链接过多。
因为WTBS在每个从SP返回的页面要进行过滤,在每个页面前加入100个左右的字符;如果链接数过多的话,在添加的冗余字符过多,造成页面通过手机通过WAP Gateway无法访问。
“返回梦网”按钮指定的链接不对。
对于"返回梦网"的链接不得使用<a href="http://wap.monternet.com">或者<go href="http://wap.monternet.com">以外的方式。
SSO/ECHO的时延过长。
WAP Gateway对WAP服务器返回的时延要求比较严格;如果在指定的timeout时间(一般为3-5秒)内没有返回,则会返回网关错误信息;因此如果SP的信息源服务器跟MISC的WTBS服务器之间网络状况不好,并且MISC的负载过重都会造成每步的时延;每步的时延累加会造成整个时延过长。
WML页面没有严格遵循XML格式。
WTBS将对每个返回的WML页面进行解包;因为页面分析是严格按照XML的语法进行的,如果页面没有严格按照XML语法,则分析就会出错;但是因为浏览器可以支持非标准的XML语法,所以造成有些页面通过WTBS不能访问,但是用浏览器就可以访问。
WML页面是否有&nbps;。
在旧版本的WTBS中,如果SP的页面中如果有&nbps;空格,则会分析出错,是个bug。
href指向的链接中的?之后的参数带着/,则WTBS在这种链接下增加过滤参数会出错。
在旧版本的WTBS中会出错。

附件1
对HTTP 1.1和CACHE控制的介绍.

一、HTTP 1.1的简要介绍
HTTP 1.1是一个基于文本的互联网实体信息交互主流协议,这里的实体可以是WAP兼容浏览器之类的用户终端,可以是WAP网关之类的代理服务器,也可以是Java servlet之类的源服务器程序。它们之间的交互信息就是两大类:客户端对服务器端的请求(request)和服务器端对客户端的响应(response)。一次完整的交互包括一个请求和对它的响应。

所有的请求和响应都采用[RFC822]中定义的标准互联网消息格式,框架如下:
* 消息定义
* 没有或多个消息头
* CRLF(空行回车)
* 可选的消息本体
其中消息定义不分指定了发送消息的类型。请求和响应都可以包含多个消息头,用来进一步或者重新定义用户终端和服务器之间的交互。CRLF仅仅用来将信息定义和消息本体分开。

1、 请求
在消息定义部分可以这样定义请求: 请求类型 URL HTTP/1.1
其中请求类型可以是下面的一种:
①. OPTION:返回请求者和相应者之间可以使用的通信选项,主要用来检测服务器处理能力;
②. GET:获得以URL标示的文件内容或者程序执行结果。服务器根据文件名后缀判断服务内容,比如该URL是静态文本还是一个程序;
③. HEAD:除了不返回响应的信息本体以外,得到的是跟GET一样的信息。一般用来测试链接的有效性、可达性和近期修改;
④. POST:把消息本体中的消息发送到一个URL或者其他类似的服务器端定义行为。通常用来提交一个HTML表单或者一些数据操作活动;
⑤. PUT:把消息本体中的消息发送到一个URL,跟POST类似,但不常用;
⑥. DELETE:删除URL指定的资源;
⑦. TRACE:调用一个远程应用层请求消息回路。发出这个消息的用户终端除了收到原来的消息内容以外,还得到消息在Internet上的传送路径。
最常用的请求类型--也是我们在处理WAP应用时最关心的--是GET和POST。假设有一个WML文档,我们用UP的浏览器去浏览的话,就会向服务器发出如下GET请求:
GET www.wap86.com/index.wml HTTP/1.1
accept-charset: UTF-8
accept-language: ch
accept: text/vnd.wap.wml, */*, image/bmp, text/html
user-agent: UP.Browser/3.1-UPG1 UP.Link/3.2
host: www.wap86.net
……
其中粗体的部分是HTTP消息头,这里我们忽略了一些与我们关系不大的消息头。
accept-charset: 用户终端支持的字符集
accept-language: 用户终端目前使用的语言
accept: 用户终端可以接受的MIME文件类型
user-agent: 用户终端供应商提供的终端描述信息
host: 请求信息发送到的域名

2、 响应
响应的消息定义部分一般是这样的:HTTP/1.1 状态码 状态描述 在[RFC2616]中定义了近40种不同的状态码(分成5组)。其中最常见的是3个:
200 OK
401 Unauthorized
404 Not Found

继续上面那个例子,如果该URL合法的话,服务器的响应会是这样的:
HTTP/1.1 200 OK
Server: www/5.0
Date: Fri, 26 Oct 2000 12:15:23 GMT
Connection: Keep-Alive
Content-Length: 1211
Content_Type: text/vnd.wap.wml
Last-Modified: Mon, 22 Oct 2000 18:19:24 GMT

<?xml version=”1.0”>
<!<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

WAP页面及技术规范FAQ








签名