收藏 分销(赏)

实例讲解制作OTA短信.doc

上传人:仙人****88 文档编号:7934865 上传时间:2025-01-27 格式:DOC 页数:9 大小:200.50KB 下载积分:10 金币
下载 相关 举报
实例讲解制作OTA短信.doc_第1页
第1页 / 共9页
实例讲解制作OTA短信.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
[SMS&WAP]实例讲解制作OTA短信 来自动配置手机WAP书签 空中下载(OTA)的概念 OTA,即Over The Air,国内翻译为空中下载。 OTA标准由爱立信和诺基亚共同制订。OTA涵盖了许多范围,比如Kjava中的应用程序下载也是通过OTA。我们这篇文章主要讲的是,通过短信方式空中下载配置信息,参考的文档是OTA_settings_general_7_0.pdf。 在 你可以看到许多Nokia - Ericsson OTA Documents。 下载OTA Setting规范: 下载OTA Setting示范: 规范中定义了三种Setting: l 浏览器设置 l 浏览器的书签设置 l SyncML设置 也就是说,你通过发送短信可以帮助用户手机配置这三种设置。 商业应用示范 网易有一个很好的示范,你可以浏览 它下面的注解也说了:“OTA自动配置简单来说就是通过一条特殊格式的短信为客户手机设置手机参数。适合机型:所有支持OTA设置的开通GPRS的WAP手机。(常见的支持OTA的机型有:索尼爱立信、爱立信、诺基亚等。)” 它的这个示范是可以给你的手机上发送两个短信的,一个是你的WAP上网浏览器设置,一个是他的WAP书签。两条短信的显示标题都是“配置信息”。 我们下面具体讲解一下“WAP书签”的OTA短信生成办法。 简单粗暴直奔主题 原则上,你只要看了OTA_settings_general_7_0.pdf,并参照OTA_service_settings_example_v11.pdf,就可以轻松地制作出符合规范的OTA短信。 但是,本文档的目的就是让你简单粗暴地直奔主题,看完这篇文档后,就了解了OTA短信的概念,通过以下代码: OTAMessage OTAMessage message = new OTAMessage(); txtOTAResult.Text = message.GetSMSBytes(txtBookmarkName.Text, txtBookmarkURL.Text); 来生成短信二进制内容,并通过 UltraBinarySMS UltraBinarySMS.SendSMS sendsms = new UltraBinarySMS.SendSMS(); string strResponse = sendsms.send(content, destmobile); 发送短信,你就可以立即在手机上看到效果。 下面,我们来铺垫: 你要给目的手机发送一条短信,它必须是二进制格式的,这样手机才能够识别出来。 这条短信内容差不多分为三块: l WDP Layer的包头; l WSP Layer的包头; l WBXML。 书签的真正内容是用WBXML表述的。 WDP、WSP 什么是WDP和WSP呢?。 WDP即Wireless Datagram Protocol。WSP即Wireless Session Protocol。 更多信息可以参考 WAP Forum 在设计1.x版本的时候是经过深思熟虑的,但它和我们熟知和喜爱的3W协议(比如HTTP, SSL 和HTML)并不兼容。 WAP1.x堆栈被定义为五层,自底向上依次是: u WDP (Wireless Datagram Protocol), u WTLS (Wireless Transport Layer Security), u WTP (Wireless Transaction Protocol), u WSP (Wireless Session Protocol), u WAE (Wireless Application Environment,包括 Wireless Markup Language 或 WML, 以及 WMLScript )。 每一层都和3W堆栈层面大致吻合: n WDP->IP, n WTP->TCP, n WTLS->SSL/TLS, n WSP->HTTP, n WML->HTML。 这时你可以参考 ,The OSI Model for Wireless Communication。 由于WSP相当于HTTP层,那么WSP层所肩负的职责是: 1).提供HTTP 1.1的功能和语义 2).能力协商 3).会话状态长期保存 4).会话挂起和恢复 5).可靠以及不可靠的Push的公共机制 等等。 在我们的OTA实现中,WSP Header其实就是声明两个内容:PDU type和MIME Type;至于WDP,就是声明一个端口号,并说明本数据包是整条短信的第几个包。 本实现代码参考了CodeProject上的一个生成WAP Push的工程,所以你将会看到类似于它的WDP、WSP类和方法。 WBXML WBXML,就是WAP Binary XML。 简单地说,它就是一个定义好的XML片断,可以表述出WAP浏览器设置、WAP书签设置等等内容。 比如,这样一个实例: UltraBinarySMS <CHARACTERISTIC-LIST> <CHARACTERISTIC TYPE="BOOKMARK"> <PARM NAME="NAME" VALUE="yahoo"/> <PARM NAME="URL" VALUE=""/> </CHARACTERISTIC> </CHARACTERISTIC-LIST> 这样指明一个名为“yahoo”的WAP书签,指向。 很简单不是吗? 但是如何将这个XML转换为短信所需要的二进制呢? 转换过程:按图索骥 Nokia是这么定义转换规则的,很简单,就是尽可能简短地用一个字符表示某一个元素。比如我们上面定义的WBXML可以用下面的转换规则: WBXML节点定义 对应的二进制ASCII字符 <CHARACTERISTIC-LIST> 45 <CHARACTERISTIC C6 TYPE="BOOKMARK" 7F > (End attribute) 01 PARM 87 NAME="NAME" 15 VALUE 11 String start 03 Yahoo 7961686F6F String end 00 /> End (PARM) 01 PARM 08 NAME="URL" 17 VALUE 11 String start 03 687474703A2F2F7761702 E7961686F6F2E636F6D String end 00 /> End (PARM) 01 /> End (CHARACTERISTIC) 01 /> End (CHARACTERISTIC-LIST) 01 是不是很简单? 具体的转换规则,可以参考《OTA_settings_general_7_0.pdf》的8.2章节。 下面简单说一下分包: 分包 如果你的短信既要设置浏览器,又要设置书签,就有可能短信内容超长,必须事先分为两个或者多个包。 《OTA_settings_general_7_0.pdf》 和《OTA_service_settings_example_v11.pdf》的例子可以很明显地看出来这一点。 每个包还按照二进制短信发出,由客户端-手机自行合并为一个,并解析。 《OTA_service_settings_example_v11.pdf》的例子中,通过WDP的包头来设置: 02代表共有两个包(Total no. of segments in datagram); 第一个短信的01代表这是第一个包(segment count); 第二个短信则是02。 我的源代码 OTASMS工程中有一个OTACreator项目,它提供了一个com.ultrapower.OTACreator.dll,来给出如何根据输入参数“书签标题”和“书签URL”生成最终要发送的OTA短信内容。它的调用方法如下所示: OTAMessage OTAMessage message = new OTAMessage(); string strSMSContent = message.GetSMSBytes(“我的WAP”, “”); strSMSContent就是我们要的短信内容。上面的代码执行之后,得到的二进制ASCII文本内容是: Sms content 0B0504C34FC002000304010101062C1F2A6170706C69636174696F6E2F782D7761702D70726F762E62726F777365722D73657474696E67730081EA01016A0045C67F0187151103E68891E79A8477617000018717110387687474703A2F2F6D797761702E636F6D00010101 稍候我们按照《OTA_service_settings_example_v11.pdf》解释一下这个字符串每一个字符的含义。 我们还提供了一个公开的Web Service: http://219.238.168.183/SendBinarySMS/sendsms.asmx?wsdl Web service介绍 提供免费的发送二进制短信的渠道。本服务仅供测试OTA自动配置和书签短信。中国移动有监控,请勿作其他用途。 支持下列操作。有关正式定义,请查看服务说明。 · send 填写二进制短信的HEX ASCII文本内容。比如“0B0504C34FC0020003040202296A0101860711036874”之类的。具体要填写的内容,请参考我的OTASMS工程,它会帮助你生成要发送的二进制内容。 ,供您测试发送OTA短信。只需要提供输入参数:短信内容和目标号码即可。 你运行本工程的OTATextBuilder,可以看到这样的界面: 点击“调用OTACreator生成OTA”按钮之后,再点击“将上面的二进制短信发出去”按钮,你的手机上就会收到一个叫做“配置信息”的短信,它有一个菜单叫做“存入书签”。 逐行解释OTA例子 上面生成了一个OTA短信: Sms content 0B0504C34FC002000304010101062C1F2A6170706C69636174696F6E2F782D7761702D70726F762E62726F777365722D73657474696E67730081EA01016A0045C67F0187151103E68891E79A8477617000018717110387687474703A2F2F6D797761702E636F6D00010101 我们尽量细地解释一下。首先是WDP: Layer binary 解释 WDP层 0B User-Data-Header (UDHL) Length = 11 05 UDH IE identifier: Port numbers 04 UDH port number IE length C3 这四个数字定义了一个端口号:49999 4F C0 02 00 UDH IE identifier: SAR 03 UDH SAR IE length 04 Datagram ref no. 01 这两个只有当OTA内容过长时,短信会被拆分为两条或多条,这时候第1个字节表明OTA短信共有几个数据包,也就是共被拆分为几条短信;第2个字节表明当前数据包是第几个数据包。 默认情况下,我们只有一个数据包,并且当前包是第一个数据包。所以就是0x01 0x01了。 01 接下来是WSP: Layer binary 解释 WSP层 01 Transaction ID / Push ID WSP layer 06 PDU type (push) 2C Header length (content type+headers) 1F value length quote length greater than 30 2A value length (value name not used) 61,70,70,6C,69,63,61,74,69, 6F,6E,2F,78,2D,77,61,70,2D ,70,72,6F,76,2E,62,72,6F,77, 73,65,72,2D,73,65,74,74,69, 6E,67,73 就是ASCII字符串:'a','p','p','l','i','c','a','t','i','o','n','/','x','- ','w','a','p','- ','p','r','o','v','.','b','r','o','w','s','e','r','- ','s','e','t','t','i','n','g','s', MIME-Type = browser settings 00 Null termination of content type string 81 charset (well known PARM.(short integer)) EA UTF-8 (using short integer) WSP layer (end WSP headers) 然后是WBXML: Layer binary 解释 WBXML 01 Version WBXML 1.1 01 Unknown public identifier 06 Charset UTF-8 00 string table length 45 CHARACTERISTIC_LIST with content tag C6 CHARACTERISTIC with content and attributes tag 7F 书签属性。 在规范8.2章节定义的 TYPE=BOOKMARK 对应的binary是7F 01 属性定义结束 87 PARM with attributes 15 NAME=NAME 11 VALUE 03 Inline string E68891E79A84574150 “我的WAP”所对应的binary 00 End inline string 01 End(PARM) 87 PARM with attributes 17 NAME=URL 11 VALUE 03 Inline string 687474703A2F2F6D797761702E636F6D “”所对应的binary 00 End inline string 01 End(PARM) 01 end (CHARACTERISTIC) 01 end (CHARACTERISTIC_LIST) 小结 利用本文档提供的源代码,您可以轻松发送一个OTA书签短信给您的手机。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服