sms实现wap push的方法和格式(转载)

wap push格式

00     ’SMSC Len。用手机上设置短信中心号码
51     ’submit type
00     ’SMS_TP_Message_Reference type
0B    ’对方电话的长度
A1     ’Number type
13175639296F6       ’电话号码:13573629696
00     ’SMS_TP_PID
F5     ’SMS DCS
A744         ’SMS available date
0B05040B8423F00003030101         ’Wap Push Header 1
29060603AE81EA8DCA   'Wap Push header 2
02 
05  '-//WAPFORUM//DTD SI 1.0//EN 
6A  'UTF-8 
00 
45  '<si> 
C6  '<indication 
08  '<action=signal-high> 
0C  'href="http:// 
03  '字符串开始 
687474703A2F2F3231382E35392E3133382E35343A32303030  'URL:   http://218.59.138.54:2000
00  'URL 字符串结束 
01  '> 
03  '内容描述字符串开始 
'这里就是显示给用户的内容,用utf-8编码。 
9A6C5EF6671D       '内容描述:马延朝
00  '内容描述字符串结束 
01  '</indication>" 
01  '</si> 
可以只能显示很少的汉字,请高手指点怎么分包发送更多的汉字?

一下方法是经过验证的。

TrxID  =一个随机数
    fullStr = "0605040B8423F0" & TrxID & "0601AE"
    fullStr = fullStr & "02056A0045C6080C03"
    fullStr = fullStr & StrToHex(TheURL, 2)
    fullStr = fullStr & "001103" & "0102"
    fullStr = fullStr & "40494400080AC307" & Format(Now, "yyyymmddhhmmss")
    fullStr = fullStr & "10C304" & "20990101" & "0103"
    fullStr = fullStr & StrToHex(MServiceName, 2) & "000101"

分段发送的

例如  URL:wap.gd.monternet.com/?userType=B&serviceID=04020028 提示信息:神秘激情地带,江湖儿女情长神秘激情地带,江湖儿女情长神秘激情地带,江湖儿女情长 
第一包:
0B05040B8423F0000355020155060403AE81EA02056A0045C60C037761702E67642E6D6F6E74657
26E65742E636F6D2F3F75736572547970653D42267365727669636549443D303430323030323800
070103E7A59EE7A798E6BF80E68385E59CB0E5B8A62CE6B19FE6B996E584BFE5A5B3E68385E995BF
E7A59EE7A798E6BF80E68385E59CB0E5B8A62C  
第二包:
0B05040B8423F00003550202E6B19FE6B996E584BFE5A5B3E68385E995BFE7A59EE7A798E6BF80E6
8385E59CB0E5B8A62CE6B19FE6B996E584BFE5A5B3E68385E995BF000101 ,解释可参考WDP WSP,我就不具体说了

0B是头的总长度
05040B8423F0是固定的,表示接下来是一个WAP PUSH
分包的关键是0003550201,对应GSM 03.40里9.2.3.24.1,00表示是Concatenated Short Messages,03是长度,55是reference number,楼主在这儿固定编码会有问题的,如果同时下发两条这样的多包短信给同一个手机,手机就区分不开了,02表示分成2个短信发送,01是当前包的序号。

一个扩展包wappush包是这么构成的
WDP + WSP + SI/SL

如果长度超常(短信一个包的Content不要超过140)

就要分解成

WDP1 + (WSP+SI/SL)的part 1
WDP2 + (WSP+SI/SL)的part 2
...
WDPN + (WSP+SI/SL)的part N

如单包
WDP: 06 05 04 0B 84 23 F0
WSP: ...
SI/SL:...

双包是
第1包
WDP: 0B 05 04 0B 84 23 F0 00 03 01 02 01
Part1: ...

// 00 - UDH IE Tag
// 03 - UDH SAR IE Length
// 01 - Refrence
// 02 - Total Packet
// 01 - Current Packet

第2包
WDP: 0B 05 04 0B 84 23 F0 00 03 01 02 02
Part2:...

WDP参考相关文档。

=====================================================
首先,构造一个Push消息体:

02
05  '-//WAPFORUM//DTD SI 1.0//EN
6A  'UTF-8
00
45  '<si>
C6  '<indication
08  '<action=signal-high>
0C  'href="http://
03  '字符串开始
这里就是url从"http://"以后的那部分的每个字符的ASCII码
00  '字符串结束
0A  'created=
C3  '时间
07  '7个字节,也可以是04,下面就只需要年月日就可以了
20 03 01 01 00 00 00 '年,月,日,时,分,秒,格式如何一看就明白吧。
10  'si_expires=
C3  '时间
07  '跟上面一样
20 04 01 01 00 00 00
01  '>
03  '字符串开始
这里就是显示给用户的内容,用utf-8编码。
utf-8编码,英文字符直接用ascii码;中文如果unicode是(二进制)abcdefgh ijklmnop,
那么utf-8就会变成1110abcd 10efghij 10klmnop
00  '字符串结束
01  '</indication>"
01  '</si>

有了Push消息体之后,需要在前面增加一个Push PDU
81  'transaction id (connectionless WSP)
06  'pdu type (06=push)
06  'Headers len
03 AE 81 EA    'content type: application/vnd.wap.sic; charset=utf-8
8D    'content-length
XX  '这里就是Push消息体的长度。如果消息体长度小于128,那么就要加上128。例如是93个字节,那么需要填入DD
'至于大于127怎么处理,按照协议好像应该是这样,例如原来的二进制abcdefgh,那么就要弄成两个字节:
'1000000a 1bcdefgh,但是尝试还没成功

在然后,还要在前面增加一个UDH
06 'User Data Header Length (6 bytes)
05 'UDH Item Element id (Port Numbers)
04 'UDH IE length (4 bytes)
0B 84   'destination port number
23 F0   'origin port number

如果所有这些加起来大于140个字节,那么就需要修改UDH头,分成两条短消息串联。但是没有尝试成功。

发送的时候,udhi=1,pid=0,dcs=4
Nokia 3650/7650肯定OK,motorola t720肯定ok,siemens 3118,3618肯定不行,其他的还没尝试。

同样的技术可以用来发送mms通知、fundown的铃声图片。

需要解决的问题:长于127字节/两条短信的时候该怎么办。

另转载 Wap push over sms 实践

通过短信进行点对点的WAP PUSH,本质上来说应该是发送一个wap页面(WBXML)到接收方,里面含有一段文字和一个url链接。

在发送端采用PDU模式发送,编码是UCS2。

整个发送的包大部分内容都是固定的,只需要对几个地方根据希望发送的内容进行一下替换即可。

我参考的例子是这样的,只用说明中红色的部分是需要变化的:

0051000BA13108086406F600F5A7850B05040B8423F0000303010129060603AE81EA8DCA02056A00
45C6080C033231312e3133362e3135332e33302f776170707573682f70757368496e6465782e6a737
03f7075736849643d3035303531313134313630353231000103E8AFB7E782B9E587BBE4BBA5E4B88B
E993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9000101

00 SMSC 地址信息的长度 00表示用手机上设置短信中心号码,PDU 串的“SMSC 址格式”段和“SMSC 地址”段将省去 
51 基本参数(TP-MTI/VFP) 不要求发送回复 
00 消息基准值(TP-MR) 
0B 对方电话的长度 
A1 目标地址格式 A1表示为国内格式 
3108086406F6 目标地址,补‘F’凑成偶数位后奇偶位互换 (因为手机号码是11位,需要补一个F,再将奇偶位互换,比如12345678901需要变成2143658709F1)
00 协议标识(TP-PID) 是普通GSM 类型,点到点方式 
F5 用户信息编码方式 (TP-DCS) 
A7 有效期(TP-VP) 
85 用户信息长度(TP-UDL) (此处是从下面的0B开始所有的字节数/2对应的十六进制数)
0B WAP PUSH头部的总长度 
05040B8423F0表示接下来是一个WAP PUSH 
00 表示是Concatenated Short Messages 
03 长度 
03 reference number 
01 表示分成1个短信发送 
01 当前包的序号 
29060603AE81EA8DCA WSP 
02 标记位 
05 -//WAPFORUM//DTD SI 1.0//EN 
6A UTF-8 
00 标记开始 
45 
C6 
08 
0C href=\"http:// 
03 字符串开始 
3231312e3133362e3135332e33302f776170707573682f70757368496e6465782e6a73703f7075736
849643d3035303531313134313630353231 URL (编码过的URL,不带http://)
00 URL 字符串结束 
01 > 
03 内容描述字符串开始 
E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9 内容描述字符串 (编码过的文字内容)
00 内容描述字符串结束 
01 
01

AT指令发送时:

at+cmgf=0 //设置发送为二进制模式

OK

at+cmgs=93 //十进制的数字,值为 (上面生成的一大串的字节数/2)-1,还没搞清为啥要减一

> 0051000BA1。。。。。。。(就是那一大串了) Ctrl+Z

+CMGS: 14

OK

发送成功

sms实现wap push的方法和格式相关推荐

  1. [原]Wap push over sms 实践

    Wap push over sms 实践  author:clapton_xpAThotmailDOTcom 20060323 通过短信进行点对点的WAP PUSH,本质上来说应该是发送一个wap页面 ...

  2. Create WAP Push SMS Messages

    转自:http://blog.163.com/htlxyz@126/blog/static/1685940292009620111811387/ 改过后的代码在下面,程序好像可以输出了WAPPUSH的 ...

  3. android wap push实现

    WAP PUSH Date Ver Description Author Reviewer 2011-9-5 0.0.1 Draft 1. Wap Push简介: Wap Push分为两种:SI(Se ...

  4. WAP Push SP接口协议

    1.术语说明 1)      DSMP Data Service Management Platform,数据业务管理平台.中国移动集团公司的移动数据业务平台,移动梦网计划(Monternet)的核心 ...

  5. main方法的格式讲解

    JVM是Java Virtual Machine(Java虚拟机)的缩写 public static void main(String[] args) {} public 被jvm调用,访问权限足够大 ...

  6. IOS8 PUSH解决方法

    registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later IOS8 PUSH解决方法 昨天晚上整理PUSH的东 ...

  7. 如何储存图片方法jpg格式png格式#ps教程#ps抠图

    如何储存图片方法jpg格式png格式#ps教程#ps抠图

  8. 字符串右移n位,例如 “hello world“ 右移两位 后ldhello wor 要求写一个方法实现此功能,方法的格式是 String moveToRight(String str,int po

    字符串右移n位,例如 "hello world" 右移两位 后ldhello wor 要求写一个方法实现此功能,方法的格式是 String moveToRight(String s ...

  9. Android 短信 彩信 wap push的接收

    接收彩信 <receiver android:name=".smsreceiver" android:permission="android.permission. ...

  10. wap push简介

    2019独角兽企业重金招聘Python工程师标准>>> WAP就像因特网,是一个内容丰富的网络,用户如何找到自己喜欢的站点,如何在一个站点中找到自己 喜 欢的业务,往往需要花上很长的 ...

最新文章

  1. POJ-2948 Martian Mining 动态规划
  2. 【SLAM】gradslam(∇SLAM)开源:论文、代码全都有
  3. java多张图片上传安卓,Android Rxjava+Retrofit2 多图片+文字上传
  4. 聊聊 Docker Swarm 部署 gRPC 服务的坑
  5. 数据解析学习笔记(正则解析、bs4解析、xpath解析)
  6. 配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。...
  7. Android轩辕剑之ActionBar之四
  8. window server2012服务器上如何安装nginx并启动
  9. 自定义Silverlight播放器
  10. 干货|java缓存技术详解
  11. GPS经纬度坐标转UTM坐标(c++)
  12. excel姓名转拼音
  13. CISSP考试认证心得
  14. 论文Re-ranking Person Re-identification with k-reciprocal Encoding(person re-id的re-ranking)
  15. java打造手机远程控制电脑之详细教程
  16. 为Linux安装CHM阅读器
  17. 云锁和悬镜服务器哪个好,安全狗、悬镜、云锁、云帮手建议用哪个比较好?
  18. Word(二) Word2016 如何删除页眉的下划线
  19. 北华大学c语言题库百度云,北华大学C语言题库精简打印版(全).doc
  20. zto中通电子面单cpcl打印指令实例

热门文章

  1. 宗成庆《文本数据挖掘》学习笔记:第二章 数据预处理和标注
  2. 问世间最大的乐趣是什么?
  3. 金橙子打标卡labview打标开发没头绪?c#封装成dll后labview调用真香!
  4. linux打开gaussian16软件,Gaussian View 在Ubuntu16下的安装
  5. Chirp信号及其生成
  6. Android 反编译三种方式
  7. 新浪纯微博html5版,官方出品的精简版!新浪微博轻版App体验
  8. 神经网络基本原理简明教程之线性回归预测房价
  9. Android 全局替换项目默认字体
  10. 产品经理如何搭建自己的知识地图?