如何通过短信网关发送Wappush消息?

1. 消息头,包含两部分,UDH和PUD,现在经过测试,有三种可以使用的包头数据.

包头a:

UDH: 06 05 04 0B 84 23 F0PUD: 01 06 03 AE 8D C4包头b:UDH: 0B 05 04 0B 84 23 F0 00 03 03 01 01PUD: 29 06 06 03 AE 81 EA 8D CA包头c:UDH: 06 05 04 0B 84 23 F0PUD: 81 06 06 03 AE 81 EA 8D 00

2. 消息体

02

05 //WAPFORUM//DTD SI 1.0//EN6A //UTF-800 //字符串结束45 //<si>C6 //<indication08 //<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)0B84//destination port number23F0//origin port number

// PUD

81//transaction id (connectionless WSP)06//pdu type (06=push)06//Headers len03AE81EA//content type: application/vnd.wap.sic; charset=utf-88D//content-lengthINT//body length 附2:封装的C++数据打包函数代码

BOOL GenWapPushMsg(const char *pszUrl,const char *pszInfo,char *pszData,int &nMsgLen)

{char szUTF8Url[256]={0},szUTF8Info[256]={0};if(!GB2UTF8((char*)pszUrl,szUTF8Url)){return FALSE;}if(!GB2UTF8((char*)pszInfo,szUTF8Info)){return FALSE;}

// guanzhong 2006-2-22, 使用了第三个包头

unsigned char szUDH[] = {0x06,0x05,0x04,0x0B,0x84,0x23,0xF0};unsigned char szPUD[] = {0x81,0x06,0x06,0x03,0xAE,0x81,0xEA,0x8D,0x00};// guanzhong

unsigned char szMsg[280]={0};

int nUDHLen = sizeof(szUDH);int nPUDLen = sizeof(szPUD);unsigned char *pszBody = szMsg + nUDHLen + nPUDLen;

unsigned char *pszPos = pszBody;

*pszPos++ = 0x02;;

*pszPos++ = 0x05; //-//WAPFORUM//DTD SI 1.0//EN*pszPos++ = 0x6A; //UTF-8*pszPos++ = 0x00; //字符串结束*pszPos++ = 0x45; //<si>*pszPos++ = 0xC6; //<indication*pszPos++ = 0x08; //<action=signal-high>*pszPos++ = 0x0C; //href="http://"*pszPos++ = 0x03; //字符串开始strcpy((char*)pszPos,szUTF8Url);pszPos += strlen(szUTF8Url);

*pszPos++ = 0x00; //字符串结束

*pszPos++ = 0x01; //>*pszPos++ = 0x03; //字符串开始

strcpy((char*)pszPos,szUTF8Info);

pszPos += strlen(szUTF8Info);

*pszPos++ = 0x00; //字符串结束

*pszPos++ = 0x01; //</indication>"*pszPos++ = 0x01; //</si>

//设置包体的长度

//szPUD[nPUDLen-1] = pszPos-pszBody;// guanzhong 2006-3-3修改,否则MOTO A768不能正常接收 szPUD[nPUDLen-1] = (pszPos-pszBody)/2 + 128;memcpy(szMsg,szUDH,nUDHLen);memcpy(szMsg + nUDHLen,szPUD,nPUDLen);nMsgLen = pszPos - szMsg;

memcpy(pszData,szMsg,nMsgLen);

return TRUE;}

如何通过短信网关发送Wappush消息?相关推荐

  1. 通过短信网关发送Wappush消息

    这一阵子工作内容比较杂,啥活都要干,这不,这两天公司需要通过sms短信网关,发送wappush消息. 因为已经有了另一个同事的工作基础,我所要作的就是使发送出去的消息尽量支持更多的手机型号.在网上搜关 ...

  2. 通过短信网关发送Wappush(包括超长Wappush)

    Wappush可以通过短信行业网关发送出去(通过submit消息体),移动和联通都是一样,至于电信的协议没试过,不过应该也一样,因为都是参照标准协议改编的.我参考了网上N多文章后才总结出来的一种规则, ...

  3. 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

  4. 微信小程序发送模板消息,php发送模板消息

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. formId 在安卓系统是纯数字,在IOS系统是一串加密字符,如图: 发送模板消息(服务通知)效果图: 前端 ...

  5. Android发送短消息程序的总结

    1.1      准备的基础知识 1.1.1          PendingIntent类 pendingIntent字面意义:等待的,未决定的Intent. 要得到一个pendingIntent对 ...

  6. 微信公众账号开发-发送模板消息

    内容概要 本篇文章主要叙述如何在微信公众帐号上实现"发送模板消息开发"功能.包含json的封装与解析. 何谓模板消息 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时, ...

  7. 发送延迟消息_微信延迟消息的发送方式

    Part one. 如何使用微信来发送延迟消息呢? Part two. 之前一次偶然的机会,想要定时发送一个消息给朋友,于是产生了微信能否发送定时消息这个念头.去百度了一下,找到了方法.微信是可以定时 ...

  8. delphi编程模拟发送QQ2008消息!

    本文主要讲解的是delphi编程模拟发送QQ消息!即利用外部程序发送QQ消息,代码很少,其实原理就是,找到QQ消息输入框,然后利用sendmessage传送一个文本信息进去,再找到发送按钮,模拟点击按 ...

  9. 004_Queue消息模式发送文本消息

    1. 新建一个名为JMSActiveMQTextMessage的Java项目, 同时拷入相关jar包 2. 相关jar包可以在apache-activemq-5.16.1\lib目录下找到 3. 编辑 ...

最新文章

  1. Spring中自己主动装配
  2. 深入理解分布式技术 - 分布式事务总结回顾
  3. 浅谈线程池(上):线程池的作用及CLR线程池
  4. 【oracle】dbms_output:控制台输出
  5. java技术突破要点
  6. 线上防雪崩利器——熔断器设计原理与实现
  7. LeetCode LCP 06. 拿硬币
  8. 你最隐秘的性格在哪?
  9. 计算机软件等级认证,中国计算机学会推出软件非专业级别能力认证
  10. Android ListView中 每一项都有不同的布局
  11. 消息中间件原理及JMS简介之二
  12. TM/QQ默认表情全部丢失的解决办法
  13. matlab gui仿真实验,基于Matlab GUI设计的光学实验仿真
  14. 群发邮件很多都进了垃圾箱,怎么办?
  15. 小白如何购买阿里云服务器(图文教程)
  16. 基于STC89C52单片机的霓虹灯
  17. 怎么从h3c服务器进去虚拟机,如何用VM虚拟机模拟H3C交换机环境.pdf
  18. 高德地图离线地图开发 教程
  19. 一个简单的原生js取色效果
  20. 页面商城总结(一)——HTML部分

热门文章

  1. 致爱丽丝c语言程序,献给爱丽丝简谱(致爱丽丝简谱c调初学者)
  2. display:flex垂直居中
  3. UG初学者相见恨晚的必备的40条技巧
  4. 酒店点餐系统开发详解(二)
  5. 计算机专业毕业设计大纲,附源码+论文+答辩
  6. 第四节 结构化分析方法的概念
  7. 微信扫码登录的一种开发思路
  8. 初识Quartz之Job组件
  9. 输入地址,获取邮编的工具类
  10. SSM【定制化】~ Spring