WAP网站开发常见问题汇总

WAP网站建设常用代码及WAP网站开发过程长犯错误,以下提供具体WAP网站设计解决方法,对于WAP开发人员有极大帮助!

一、如何使用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格式并发送出去。
如果想使用一个类似于发信的过程,就需要编辑变量名。另外发送的数据是有限的,长信息可能需要打断。

二、开发者需要一个WAP网关吗?
不是很必要。如果只想进行简单的WAP内容服务,可以使用现有的Web服务器(只需要修改MIME类型)。移动电话会通过坐落在本地的网关连接到你的服务器上。
但是在网关上驻留开发者的程序有很多好处。既然开发者的程序是网关的一个部分,开发者就可以知道呼叫号码、身份、位置等等。

三、可以看到WML的源代码么?
如果开发者使用SDK浏览的时候将能够看到WML的代码。如果只有一个HTML浏览器,可以访问Fetch Page服务(http://www.webcab.de)来取得代码。这个可以显示在Internet上的任何WML页面中。

四、怎样防止从Cache中读取WML页面?
<%
Response.ContentType = text/vnd.wap.wml
Response.Expires = -1
Response.AddHeader Pragma, no-cache
Response.AddHeader Cache-Control, no-cache, must-revalidate
%>

五、使用META的例子经过86400秒(24 hours)后过期:
<?xml version=1.0?>
<!DOCTYPE wml PUBLIC -//WAPFORUM//DTD WML 1.1//EN
http://www.wapforum.org/DTD/wml_1.1.xml>
<wml>
<head>
<meta forua=true http-equiv=Cache-Control content=max-age=86400/>
</head>
<card id=expire1day>
<p>This card will live in the cache for a day</p>
</card>
</wml>

六、获取用户手机号码和手机型号
用户手机号码和手机型号均在HTTP的HEADER中包含,说明如下。
(1) 用户手机号码
(2) 手机型号
必须要电信部门批准的Sp/Cp才可以

七、怎么能够知道请求是从WML浏览器来的还是HTML浏览器来的?
获取HTTP_ACCEPT值,判断是否为VND.WAP.WML
<%
Response.Buffer = TRUE
Dim IsWap
httpAccept = LCase(Request.ServerVariables(HTTP_ACCEPT))
if Instr(httpAccept,wap) then
IsWap=1
Else Response.Redirect /index.html : Response.Flush : Response.End
End if
%>

<%Response.ContentType = text/vnd.wap.wml%><?xml version=1.0?>
<%Response.Flush%>
<!DOCTYPE wml PUBLIC -//WAPFORUM//DTD WML 1.1//EN
http://www.wapforum.org/DTD/wml_1.1.xml>
<wml>
<card id=redirect>
<onevent type=onenterforward>
<go href=/index.wml/>
</onevent>
<p>
<a href=/index.wml>enter</a>
</p>
</card>
</wml>
<%Response.Flush:Response.End%>

八、如何判断访问者是来自哪个浏览器或者移动电话?
可以通过检查 HTTP_USER_AGENT标签来判断。例如试着使用Microsoft Internet Explorer访问一个站点的时候,HTTP_USER_AGENT将返回:Mozilla/4.0 (compatible;MSIE 5.0; Windows 98);在同样的情况下使用Nokia 7110访问这个站点,HTTP_USER_AGENT就会是:Nokia7110/1.0(04.73)。据此可以判断用户代理是什么类型的。

九、如何利用Wap页面进行直接拨打电话号码
<p>
<input name=phone_no format=*m value=/>
<anchor>立刻拨打
<go href=wtai://wp/mc;$(phone_no) method=get>
</go>
</anchor>
<br/>
</p>
或者直接写入电话号码的方式:
<p>
<a href=wtai://wp/mc;13213083428>拨打黄冠军电话</a>
</p>

十、Asp中Gb2312转UTF-8程序
把下面的代码粘贴到ASP+WMl的文件中。
<%
Function uni(Chinese)
For i = 1 to Len (Chinese)
a=Mid(Chinese, i, 1)
uni=uni & &#x & Hex(Ascw(a)) & ;
next
End Function
%>
使用方法:
<a title=<%=Uni(确定)%> href=http://www.51omeng.com/bicyle/bikewap/index.asp><%=Uni(欢迎光临被爱 可以)%></a><br/>
<do type=prev name=Prev label=后退><prev/></do>

十一、错误连接
response.write <a href='http://m2p.cn/txl.asp?mobileno=&mobilenum&”&file=&file&”'>通讯录</a>
& 替换 &
response.write <a href='http://m2p.cn/txl.asp?mobileno=&mobileno&&page=& s2-1&&file=&file&'>上一页</a>

十二、不能传递中文,需要编码
''用URLEncode方法进行编码
strurlencode=server.URLEncode(str) //能够取出中文
例 如:response.write <a href='http://m2p.cn/kjj.asp?mobileno=&mobileno&&host=&host&&comm=&server.URLEncode(mid(v(2*i+1),1,j-1))&'>&mid(v(2*i+1),j+1,len(v(2*i+1))-j)&</a>
''用HTMLEncode方法进行编码
strhtmlencode=server.HTMLEncode (str)
拨打电话
<a href='&wtai://wp/mc;&mid(v(2*i+1),1,j-1)&'>&mid(v(2*i+1),j+1,len(v(2*i+1))-j)&</a>

十三、Wap不保存cashe,强制刷新
<meta http-equiv=Cache-Control content=max-age=0 />
<meta http-equiv=Cache-control content=no-cache />

十四、按键上加连接
<do type=options label=回首页>
<go href=http://wap.un165.com/ />
</do>

十五、常见错误
m3gate命令提示
Fatal Error. Ln 10 .Col 10
Expected end of tag ‘p’
response.write 命令已执行</br>

正确写法
response.write “命令已执行”
response.write “<br/>”

十六、同一连接wap不能重复操作
文本需要翻页,因为每一次点击”下一页”传递的连接是相同的
手机不执行重复操做
解决:方法 添加一个动态参数 &time=now

十七、对于wap的自动换行
<p mode='nowrap'>强制不让系统自动换行

十八、自动刷新
<card id=c1 ontimer=#c1>
<timer value=20/>
<p align=center>
test card1
</p>
</card>

十九、右返回软键
<do type=options label=返回 name=home>
<spawn href=XXX.wml>
</do>
wap服务器配置
text/vnd.wap.wml wml image/vnd.wap.wbmp wbmp
text/vnd.wap.wmls wmls
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlscriptc wmlsc
text/vnd.wap.wmlscript wsc
text/vnd.wap.wmlscript wmlscript
OTA配置
application/java-archive jar
text/vnd.sun.j2me.app-descriptor jad

二十、Asp动态生成Wml文件
ASP文件头声明如下:
<%
Response.ContentType= text/vnd.wap.wml
%>
含义如下:用于声明此文件作为wml文件处理。
程序举例:
<%
Response.ContentType = text/vnd.wap.wml
%>
<?xml version=1.0 encoding=gb2312?>
<!DOCTYPE wml PUBLIC -//WAPFORUM//DTD WML 1.1//EN http://www.wapfourm.org/DTD/wml_1.1.xml>
<wml>
<card id=index title=bicyle newcontext=true>
<p align=center>
Wap文件实例<br/>
</p>
<p>
Bicyle祝愿您在2005年实现心中的梦想。<br/>
<a title=确定 href=trywmls.asp>wml测试</a><br/>
<a title=确定 href=../index.asp>返回上级</a><br/>
<a   title=确定 href=http://www.wap-web.cn>返回互动河北</a><br/>
<a   title=确定 href=http://wap.uni-info.com.cn>返回首页</a><br/>
</p>
</card>
</wml>

二十一、Asp中Gb2312转UTF-8程序
把下面的代码粘贴到ASP+WMl的文件中。
<%
Function uni(Chinese)
For i = 1 to Len (Chinese)
a=Mid(Chinese, i, 1)
uni=uni & &#x & Hex(Ascw(a)) & ;
next
End Function
%>
使用方法:
<a title=<%=Uni(确定)%> href=bicyle/bikewap/index.asp><%=Uni(欢迎光临被爱可以)%></a><br/>

二十二、关于Wap1.2的图铃下载
特举一个河北联通wap1.2下载举例
图片的下载:
<a title=确定 href=uplink:download?source=http://www.wap-web.cn/图片& object=phone:wallpaper&size=4412&status=http://www.wap-web.cn/>download</a><br/>
若是铃声:
object=phone:ringtone
这个代理(http://wap.165e.com/xx)是联通提供的,当然还可以有其他的代理。目的是只有资格的cp/sp才可以使用,并且利用它下载。
status=后边的东西文件名可以随意的。只要能够让手机访问就可以。
我的下载后的status文件中关键的部分:
<%Response.ContentType = text/vnd.wap.wml
theresult=request(STATUS)
if theresult=OK then
download_result=Bicyle提示您,图片已经下载成功。
else
download_result=非常抱歉,下载失败。
end if
%>
注意:OK一定是大写的,否则下载成功了,也会提示您下载失败。
其他的为wml代码。
在<P><%=download_result%><br/></P>显示下载结果。另外这个文件要包含一些返回链接等。

二十三、关于获得手机号码
举例河北联通手机号码的获得。只有被联通批准的Sp/Cp才可以。
PhoneNumber =Request.QueryString(phonenumber)
或:PhoneNumber =Request (phonenumber)
其他参数无法获得手机号码的原因,可参考:
摘自联通文档
当用户在使用SP提供的业务时,用户的请求经过WAP平台处理后,SP服务器收到HTTP请求获取用户的手机号码和手机型号方法说明如下。
用户手机号码和手机型号均在HTTP的HEADER中包含,说明如下。

(1) 用户手机号码
由于手机号码为联通公司内部资源,并且涉及到用户个人隐私,如果SP的业务需要获得用户手机号码,SP必须向中国联通提出申请,经审核通过后,中国联通配置WAP平台向SP服务器传送手机号码。
用户手机号码分为2类:
 加密的手机号码:被加密的手机号码,为256为字符,与手机号码一一对应。HTTP HEADER名为“deviceid”。
 公开的手机号码,为133开头的11位数字:HTTP HEADER名为“x-up-calling-line-id”。(考虑与WAP1.2一致,暂定)

(2) 手机型号
手机型号对应的HTTP HEADER名为“user-agent”。
如Sanyo-SCP588对应的user-agent为:Sanyo-SCP588CN/1.0 UP.Browser/6.2.2.4 (GUI) MMP/2.0
注意,同一个手机型号,由于浏览器版本的不同,可能出现多个不同的user-agent版本,SP可以进行模糊匹配。

二十四、关于多个参数传递
在asp或wml文件中,多个参数的传递第一个变量前为‘?’后面的参数联接符号为‘&’(&符号的UTF-8形式),另外注意中文参数不能直接被正确传递。所以传递的变量一定不能为中文汉字或中文的符号。关于中文参数的传递,需要进行相应的编码。
举例如下:
<a href=site.asp?findid=bicyle&mypage=<%=iPageCurrent%>>被爱可以Wap站</a><br/>
接收的代码:
TheSite=request.QueryString(findid )
MyPage =request.QueryString(mypage )
接收完参数后就可使用了如:<p><%=TheSite%></p>

二十五、关于Wap1.2图片格式问题
联通的CDMA手机Wap1.2手机大部分支持的是Png格式的彩色图片和Wbmp格式的图片。
Png图片要求:1、Png格式。2、256色。3、图片大小要在15K以内为佳。尺寸根据手机屏幕大小可定。如120*144像素
制作方法:可以利用Photoshop或Acdsee均可以。
对于Wap2.0支持的图铃格式比较多,可参见相关联通移动文档或手机说明。

转载于:https://my.oschina.net/paopao/blog/11566

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值