Submit.java
上传用户:leafage163
上传日期:2022-08-08
资源大小:15k
文件大小:5k
源码类别:

Java编程

开发平台:

Java

  1. package com.zzxy.shortmessage.SGIP;
  2. import java.nio.ByteBuffer;
  3.   public class Submit  extends SGIPAbstractStruct{
  4. public String SPNumber;          //21B SP的接入号码
  5. public String ChargeNumber;      //21B 付费号码,手机号码前加"86"国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串"000000000000000000000",表示该条短消息产生的费用由SP支付。
  6. public byte UserCount;           //1B 接收短消息的手机数量,取值范围1至100
  7. public String UserNumber;        //21B 接收该短消息的手机号,该字段重复UserCount指定的次数,手机号码前加"86"国别标志…  …  …  …
  8. public String CorpId;            //5B 企业代码,取值范围0-99999
  9. public String ServiceType;       //10B 业务代码,由SP定义
  10. public byte FeeType;             //1B 计费类型
  11. public String FeeValue;          //6B 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义对于包月制收费的用户,该值为月租费的值
  12. public String GivenValue;        //6B 取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费
  13. public byte AgentFlag;           //1B 代收费标志,0:应收;1:实收
  14. public byte MorelatetoMTFlag;    //1B 引起MT消息的原因0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;2-非MO点播引起的MT消息;3-系统反馈引起的MT消息。
  15. public byte Priority;            //1B 优先级0-9从低到高,默认为0
  16. public String ExpireTime;        //16B 短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
  17. public String ScheduleTime;      //16B 短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
  18. public byte ReportFlag;          //1B 状态报告标记0-该条消息只有最后出错时要返回状态报告1-该条消息无论最后是否成功都要返回状态报告2-该条消息不需要返回状态报告3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告其它-保留缺省设置为0
  19. public byte TP_pid;              //1B GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
  20. public byte TP_udhi;             //1B GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
  21. public byte MessageCoding;       //1B 短消息的编码格式。0:纯ASCII字符串3:写卡操作4:二进制编码8:UCS2编码15: GBK编码其它参见GSM3.38第4节:SMS Data Coding Scheme
  22. public byte MessageType;         //1B 信息类型:0-短消息信息其它:待定
  23. public int MessageLength;        //4B Integer 短消息的长度
  24. public String MessageContent;    //Message Length  短消息的内容
  25. public String Reserve;           //8B 保留,扩展用
  26. public static final int STRUCT_SIZE=144;//不含短消息内容的长度
  27. public Submit() {
  28. Head head = new Head();
  29. head.Msglen=Head.STRUCT_SIZE+this.STRUCT_SIZE;
  30. head.Cmd_id=SGIP.SGIP_SUBMIT;
  31. this.setHead(head);
  32. }
  33. //@Override
  34. public ByteBuffer getBuffer() {
  35. ByteBuffer buffer = ByteBuffer.allocate(STRUCT_SIZE+MessageLength);
  36. buffer.order(byteOrder);
  37. buffer.put(SPNumber.getBytes());
  38. for (int i = SPNumber.getBytes().length; i < 21; i++) {
  39. buffer.put((byte)0);
  40. }
  41. buffer.put(ChargeNumber.getBytes());
  42. for (int i = ChargeNumber.getBytes().length; i < 21; i++) {
  43. buffer.put((byte)0);
  44. }
  45. buffer.put(UserCount);
  46. buffer.put(UserNumber.getBytes());
  47. for (int i = UserNumber.getBytes().length; i < 21; i++) {
  48. buffer.put((byte)0);
  49. }
  50. buffer.put(CorpId.getBytes());
  51. for (int i = CorpId.getBytes().length; i < 5; i++) {
  52. buffer.put((byte)0);
  53. }
  54. buffer.put(ServiceType.getBytes());
  55. for (int i = ServiceType.getBytes().length; i < 10; i++) {
  56. buffer.put((byte)0);
  57. }
  58. buffer.put(FeeType);
  59. buffer.put(FeeValue.getBytes());
  60. for (int i = FeeValue.getBytes().length; i < 6; i++) {
  61. buffer.put((byte)0);
  62. }
  63. buffer.put(GivenValue.getBytes());
  64. for (int i = GivenValue.getBytes().length; i < 6; i++) {
  65. buffer.put((byte)0);
  66. }
  67. buffer.put(AgentFlag);
  68. buffer.put(MorelatetoMTFlag);
  69. buffer.put(Priority);
  70. buffer.put(ExpireTime.getBytes());
  71. for (int i = ExpireTime.getBytes().length; i < 16; i++) {
  72. buffer.put((byte)0);
  73. }
  74. buffer.put(ScheduleTime.getBytes());
  75. for (int i = ScheduleTime.getBytes().length; i < 16; i++) {
  76. buffer.put((byte)0);
  77. }
  78. buffer.put(ReportFlag);
  79. buffer.put(TP_pid);
  80. buffer.put(TP_udhi);
  81. buffer.put(MessageCoding);
  82. buffer.put(MessageType);
  83. buffer.putInt(MessageLength);
  84. try{
  85. buffer.put(MessageContent.getBytes("GB2312"));
  86. } catch (Exception e) {
  87. e.printStackTrace();
  88. }
  89. for (int i = 0; i < 8; i++) {
  90. buffer.put((byte)0);
  91. }
  92. buffer.flip();
  93. return buffer;
  94. }
  95. //@Override
  96. public void setBuffer(ByteBuffer buffer) throws Exception {
  97. }
  98.   }