联通短信是基于sgip协议的,作为第三方接入使用的是smproxyapi.jar包来开发短信功能。联通普通短信长度是140字节,超长就会报错不能提交给网关。起初规避措施是自己把长短信拆分,然后分条发送,这样手机用户接收到的就是多条短信,体验不好。后来通过查资料发现可以使用udhi头来使多条短信最终能合成一条短信展示给手机用户。
1.首先要设置tp_udhi为1,代表后面每条短信内容前面几个字节是udhi头.如果是普通短信设置为0即可。 0:不含任何头信息, 1:含头信息。参考协议:gsm03.40 9.2.3.23
2.如果一条长短信被分为了3条,则每条短信正文内容前面需要添加一个6字节的udhi头。
// 头信息。包头一共6个字节,如下:
// 1、字节一:包头长度,固定填写0x05;
// 2、字节二:包头类型标识,固定填写0x00,表示长短信;
// 3、字节三:子包长度,固定填写0x03,表示后面三个字节的长度;
// 4、字节四到字节六:包内容:
// 1)字节四:长消息参考号,每个SP给每个用户发送的每条参考号都应该不同,可以从0开始,每次加1,最大255,便于同一个终端对同一个SP的消息的不同的长短信进行识别;
// 2)字节五:本条长消息的的总消息数,从1到255,一般取值应该大于2;
// 3)字节六:本条消息在长消息中的位置或序号,从1到255,第一条为1,第二条为2,最后一条等于第四字节的值。
byte[] tp_udhiHead = new byte[6];
tp_udhiHead[0] = 0x05;
tp_udhiHead[1] = 0x00;
tp_udhiHead[2] = 0x03;
tp_udhiHead[3] = 0x00;// 初始化,后面会具体赋值
tp_udhiHead[4] = 0x00;// 初始化,后面会具体赋值。
tp_udhiHead[5] = 0x00;// 初始化,后面会具体赋值。
上面的第四个字节代表每组短信(比如一条长短信分为3条短信,则这3条为一组)的标识,不强制必须唯一,本人这样赋值:
tp_udhiHead[3] = (byte)(int)(Math.random() * 255);
3.编码。messageCoding要设置为8,即UCS2编码,也就是短信内容要使用smsContent.getBytes("UTF-16BE");来获取字节,然后前面拼接上6个字节的udhi头。普通短信messageCoding设置为15即可。
分享到:
相关推荐
总的来说,"smproxy(20040730).jar"是基于CMPP3.0协议的高效短信发送工具,为开发者提供了便捷的API,降低了开发难度,提升了短信服务的实施效率。通过合理地利用这个工具,企业或个人可以快速构建起短信发送系统,...
解决no such provider: BC 问题所需的JAR 在jdk中的jre\lib\security修改java.security文件, security.provider.6=com.sun.security.sasl.Provider 下面添加 security.provider.7=org.bouncycastle.jce.provider....
描述中提到的“java写的一个联通sgip1.2接收端程序”,进一步证实了这是一个使用Java编程语言开发的应用,它的核心功能是作为中国联通SGIP 1.2协议的接收端,意味着它可以接收到短信服务相关的数据,并对其进行解析...
spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...
Moritz Bechler编写,源码地址为:https://github.com/mbechler/marshalsec,下载下来之后使用maven编译,此工具为编译好的jar包,方便没有编译环境的同学们直接jar包开启ldap和rmi服务 开启rmi服务 java -cp ...
aspose-words-15.8.0-jdk16.jar是Aspose对Word文档转换PDF所用的Jar包;aspose-words-15.8.0-jdk16.jar是Aspose对Word文档转换PDF所用的Jar包
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web开发中,它易于人阅读和编写,同时也易于机器解析和生成。在Java世界里,`json-lib-2.1.jar` 是一个用于处理JSON的库,它提供了一系列...
`java-property-utils-1.9.jar` 可能用于读取自定义的配置文件,例如,你可能希望根据不同的环境设置不同的CORS策略,这时可以将策略写入一个属性文件,然后使用`java-property-utils`来读取并设置过滤器的参数。...
bcprov-jdk16-1.46.jar
此压缩文件中包含spring的如下组件的doc,source,jar: spring-aop-4.1.6.RELEASE.jar spring-aspects-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-context-...
solr更新到6.x的版本了,ik-analyzer-5.x.jar又不好使了。 无意间从"随-忆"的博客中看到了如何去修改源代码,从而让分词器能够适应6.x的版本,亲自尝试了一下,果然可以,于是奉上了自己重新编译的jar包。 6.x的版本...
在Java开发中,数据库连接管理是一项关键任务,因为它直接影响到应用程序的性能和资源利用效率。c3p0和MySQL Connector/J是两个非常重要的组件,它们在这个领域起着至关重要的作用。这里我们主要讨论这两个jar包的...
**使用JDK 1.7进行开发:** JDK 1.7包含了诸如javac(编译器)、jar(打包工具)、javadoc(文档生成器)等工具,以及jconsole、jvisualvm等性能监控工具。开发者可以使用这些工具进行Java应用程序的编写、编译、...
最新全套Jar: FFMPEG3.4.1+JavaCV1.4.1+OpenCV3.4.1-含windows&linux;平台链接库。安卓和macos的链接库将另发。 请根据平台选择适当的链接库。 artoolkitplus-linux-armhf.jar artoolkitplus-linux-ppc64le.jar ...
"联通企信通开发包(JAVA)"是一个专为Java开发者设计的工具,用于与中国联通的企业短信服务(企信通)进行集成。这个开发包包含了必要的API和示例代码,帮助开发者快速实现发送短信的功能,而无需从零开始编写复杂...
java中对pdf文件操作,若要加密,需要这个包。 注意bcprov有许多版本,如bcprov-jdk16-145.jar, 请确认你的iText包的版本,本包适用于iText-2.0.1.jar版
使用C3P0额外依赖的一个jar包 :mchange-commons-java-0.2.3.4.jar
json-simple-1.1.jar json-simple-1.1-sources.jar (json-simple-1.1.jar)&(json-simple-1.1-sources.jar).jar (json-simple-1.1.jar)&(json-simple-1.1-sources.jar).jar
在Java开发中,Apache Commons库是一组非常重要的工具类库,它们提供了许多实用的功能,以增强Java的标准库。这里提到的三个JAR文件——`commons-beanutils.jar`、`commons-collections-3.1.jar`和`commons-pool-1.2...
解决no such provider: BC 问题所需的JAR 在jdk中的jre\lib\security修改java.security文件, security.provider.6=com.sun.security.sasl.Provider 下面添加 security.provider.7=org.bouncycastle.jce.provider....