通过短信网关发送Wappush消息
这一阵子工作内容比较杂,啥活都要干,这不,这两天公司需要通过sms短信网关,发送wappush消息。
因为已经有了另一个同事的工作基础,我所要作的就是使发送出去的消息尽量支持更多的手机型号。在网上搜关于wap和短信方面的资料,收获不多,而且不很具体。
最后经过不懈的努力,大量的试验,现在已经可以支持很多种机型了。如:索爱K750c, 索爱K700, MOTO A768, Nokia3230, Nokia6270。
下面这段介绍转自网上,已经不知道最初的作者是谁了:
--------------------------------------------------
基于短信网关发送WAP PUSH
WAP PUSH的发送有两种途径,一个是通过PPG网关,另外一个是通过SMPP协议。其中SMPP是一个基本协议,在中国主要有三个由其派生的协议:中国移动的CMPP协议,中国联通的SGIP(在CDMA上是ETIP),以及小灵通的SMGP。通过中国移动的PPG网关发送WAP PUSH有着开发周期长,调测流程较复杂等不足,而使用CMPP协议即基于短信网关来进行WAP PUSH发送灵活性比较高,相对比较简单。
--------------------------------------------------
我所使用的方式,就是通过中国移动的CMPP协议网关,发送wap push消息。消息格式整理如下:
1. 消息头,包含两部分,UDH和PUD,现在经过测试,有三种可以使用的包头数据.
包头a:
UDH: 06 05 04 0B 84 23 F0
PUD: 01 06 03 AE 8D C4
包头b:
UDH: 0B 05 04 0B 84 23 F0 00 03 03 01 01
PUD: 29 06 06 03 AE 81 EA 8D CA
包头c:
UDH: 06 05 04 0B 84 23 F0
PUD: 81 06 06 03 AE 81 EA 8D 00
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 //字符串开始
.... //URL字符串,要UTF8编码
00 //字符串结束
01 //>
03 //字符串开始
.... //内容描述字符串,要UTF8编码
00 //字符串结束
01 //</indication>
01 //</si>
3.
生成消息包体后,要在PUD包头中设置包体的长度,PUD头中的最后一个字节表示包体的长度.
PUD[len(PUD)-1] = len(BODY)/2 + 128;
4. 生成短信内容消息数据
SMSDATA = UDH + PUD + BODY
SMSDATA在短消息中作为消息内容
5. 短信息发送
使用CMPP协议向中国移动网关发送短消息时,要设定MsgFormat为4,表示数据是二进制格式.
6. 测试结果
使用各种包头数据,所支持的手机型号不同.测试结果如下:
包头a: 索爱K750c, Nokia3230, Nokia6270
包头b: 索爱K750c, Nokia3230, Nokia6270, 多普达ppc696
包头c: 索爱K750c, 索爱K700, MOTO A768, Nokia3230, Nokia6270
附1: 第三个包头的详细描述
// 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
// PUD
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
INT //body length
附2:封装的C++数据打包函数代码
BOOL GenWapPushMsg(const char *pszUrl,const char *pszInfo,char *pszData,int &nMsgLen) // guanzhong 2006-2-22, 使用了第三个包头 unsigned char szMsg[280]={0}; unsigned char *pszPos = pszBody; *pszPos++ = 0x02;; *pszPos++ = 0x00; //字符串结束 strcpy((char*)pszPos,szUTF8Info); *pszPos++ = 0x00; //字符串结束 //设置包体的长度 memcpy(szMsg,szUDH,nUDHLen); memcpy(pszData,szMsg,nMsgLen); |
通过短信网关发送Wappush消息相关推荐
- 如何通过短信网关发送Wappush消息?
如何通过短信网关发送Wappush消息? 1. 消息头,包含两部分,UDH和PUD,现在经过测试,有三种可以使用的包头数据. 包头a: UDH: 06 05 04 0B 84 23 F0PUD: 01 ...
- 通过短信网关发送Wappush(包括超长Wappush)
Wappush可以通过短信行业网关发送出去(通过submit消息体),移动和联通都是一样,至于电信的协议没试过,不过应该也一样,因为都是参照标准协议改编的.我参考了网上N多文章后才总结出来的一种规则, ...
- 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...
不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...
- 微信小程序发送模板消息,php发送模板消息
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. formId 在安卓系统是纯数字,在IOS系统是一串加密字符,如图: 发送模板消息(服务通知)效果图: 前端 ...
- Android发送短消息程序的总结
1.1 准备的基础知识 1.1.1 PendingIntent类 pendingIntent字面意义:等待的,未决定的Intent. 要得到一个pendingIntent对 ...
- 微信公众账号开发-发送模板消息
内容概要 本篇文章主要叙述如何在微信公众帐号上实现"发送模板消息开发"功能.包含json的封装与解析. 何谓模板消息 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时, ...
- 发送延迟消息_微信延迟消息的发送方式
Part one. 如何使用微信来发送延迟消息呢? Part two. 之前一次偶然的机会,想要定时发送一个消息给朋友,于是产生了微信能否发送定时消息这个念头.去百度了一下,找到了方法.微信是可以定时 ...
- delphi编程模拟发送QQ2008消息!
本文主要讲解的是delphi编程模拟发送QQ消息!即利用外部程序发送QQ消息,代码很少,其实原理就是,找到QQ消息输入框,然后利用sendmessage传送一个文本信息进去,再找到发送按钮,模拟点击按 ...
- 004_Queue消息模式发送文本消息
1. 新建一个名为JMSActiveMQTextMessage的Java项目, 同时拷入相关jar包 2. 相关jar包可以在apache-activemq-5.16.1\lib目录下找到 3. 编辑 ...
最新文章
- 【Swift】自定义控件无限轮播 + 无限图片轮播
- nginx 重写 隐藏index.php
- AssertionError: Path does not exist: py-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Main
- python购物车程序-Python编写购物车程序
- 文件隐藏服务器版本信息,如何隐藏Apache版本号和其他敏感信息
- 雪城大学信息安全讲义 4.1~4.2
- 最后的战线java下载_最后战线2.0游戏
- 老师分身多个教室,教学还有这种神操作?
- python约瑟夫生死小游戏的实现
- 20 岁 Google vs 18 岁百度,分道扬镳?| 畅言
- IntelliLock
- csdn积分有什么用
- 【软件工程】对软件工程课程的希望及个人目标
- java生成随机数的三种方法
- 批量手机号码状态检测【已失效】
- python金融数据爬虫与数据分析学习(一)
- android各版本用户量,谷歌公布:Android用户手机系统版本份额分布
- JavaWeb自学笔记02
- word文件怎么另存
- 实时系统vxWorks - timer定时应用