分享

国内sms发wap push的支持情况(2004)(转)

 hh3755 2011-09-08

一个关于短信wap push的 问题,高手们进来看看啊[问题点数:20,结帖人:wangguodong]

楼主发表于:2004-08-18 10:08:45
我前几天在这里看到的一段短信wap   push的   代码,对移动wap的   , 
有个问题不明白, 
url                   是sp的地址还是   移动的     地址啊 
subject           的内容应该是什么啊,,最好可以举个例子 
starttime     和   endtime     做什么用的啊,,应该如何取呢 


顺便问一句,,现在移动还可以sms       进行   wap   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字节/两条短信的时候该怎么办。 
  */ 


private   static   String   getSMSPush(String   url,   String   subject,   String   startTime, 
                                                                  String   endTime) 

        String   pushString   =   " "; 
        String   body   =   " "; 
        body   +=   "02 "; 
        body   +=   "05 ";   //-//WAPFORUM//DTD   SI   1.0//EN 
        body   +=   "6A ";   //UTF-8 
        body   +=   "00 ";   //字符串结束 
        body   +=   "45 ";   // <si> 
        body   +=   "C6 ";   // <indication 
        body   +=   "08 ";   // <action=signal-high> 
        body   +=   "0C ";   //href= "http:// 
        body   +=   "03 ";   //字符串开始 
        body   +=   byteArrayToHexString(url.getBytes());   //实际地址 
        body   +=   "00 ";   //字符串结束 
        body   +=   "0A ";   //created= 
        body   +=   "C3 ";   // '时间 
        body   +=   "07 ";   //时间字节数 
        body   +=   startTime;   //YYYYMMDDHHMMSS 
        body   +=   "10 ";   //si_expires= 
        body   +=   "C3 ";   //时间 
        body   +=   "07 ";   //时间字节数 
        body   +=   endTime;   //YYYYMMDDHHMMSS 
        body   +=   "01 ";   //> 
        body   +=   "03 ";   //字符串开始 
        try 
        { 
                ody   +=   byteArrayToHexString(subject.getBytes( "UTF-8 "));   //显示给用户的内容,用utf-8编码。utf-8编码,英文字符直接用ascii码;中文如果unicode是(二进制) 
        } 
        catch   (Exception   ex) 

        { 
        } 
        body   +=   "00 ";   //字符串结束 
        body   +=   "01 ";   // </indication> " 
        body   +=   "01 ";   // ' </si> 
        int   length   =   body.length(); 
        String   pud   =   " "; 
        pud   +=   "81 ";   //transaction   id   (connectionless   WSP) 
        pud   +=   "06 ";   // 'pdu   type   (06=push) 
        pud   +=   "06 ";   //Headers   len 
        pud   +=   "03 "; 
        pud   +=   "AE "; 
        pud   +=   "81 "; 
        pud   +=   "EA ";   //content   type:   application/vnd.wap.sic;   charset=utf-8 
        pud   +=   "8D ";   //content-length 
        pud   +=   Integer.toHexString(length).toUpperCase(); 
        String   udh   =   " "; 
        udh   +=   "06 ";   //User   Data   Header   Length   (6   bytes) 
        udh   +=   "05 ";   //UDH   Item   Element   id   (Port   Numbers) 
        udh   +=   "04 ";   //UDH   IE   length   (4   bytes) 
        udh   +=   "0B "; 
        udh   +=   "84 ";   //destination   port   number 
        udh   +=   "23 "; 
        udh   +=   "F0 ";   //origin   port   number 
        pushString   =   udh   +   pud   +   body; 
        return   pushString; 

        public   static   String   byteArrayToHexString(byte   b[]) 
        { 
                String   result   =   " "; 
                for   (int   i   =   0;   i   <   b.length;   i++) 
                        result   =   result   +   byteToHexString(b[i]); 
                return   result; 
        } 

        public   static   String   byteToString(byte   b[]) 
        { 
                String   result   =   " "; 
                for   (int   i   =   0;   i   <   b.length;   i++) 
                { 
                        result   =   result   +   b[i]; 
                } 
                return   result; 
        } 

        public   static   String   byteToHexString(byte   b) 
        { 
                int   n   =   b; 
                if   (n   <   0) 
                        n   =   256   +   n; 
                int   d1   =   n   /   16; 
                int   d2   =   n   %   16; 
                return   HexCode[d1]   +   HexCode[d2]; 
        } 

        private   static   String   HexCode[]   = 
                { 
                "0 ",   "1 ",   "2 ",   "3 ",   "4 ",   "5 ",   "6 ",   "7 ",   "8 ",   "9 ", 
                "A ",   "B ",   "C ",   "D ",   "E ",   "F " 
        }; 

        private   static   String   getUTFString(final   String   gbString) 
        { 
                if   (gbString   ==   null) 
                        return   " "; 
                char[]   utfBytes   =   gbString.toCharArray(); 
                String   unicodeBytes   =   " "; 
                for   (int   byteIndex   =   0;   byteIndex   <   utfBytes.length;   byteIndex++) 
                { 
                        String   hexB   =   " "; 
                        if   (utfBytes[byteIndex]   <   '! ') 
                        { 
                                hexB   =   Integer.toHexString(utfBytes[byteIndex]); 
                                if   (hexB.length()   <=   2) 
                                { 
                                        hexB   =   "00 "   +   hexB; 
                                } 
                                unicodeBytes   =   unicodeBytes   +   "&#x "   +   hexB   +   "; "; 
                        } 
                        else 
                        { 
                                unicodeBytes   +=   utfBytes[byteIndex]; 
                        } 
                } 
                return   unicodeBytes; 
        } 



#1楼 得分:0回复于:2004-08-18 10:09:55
还有,,联通可以   用   sms     进行wap   push
#2楼 得分:0回复于:2004-08-18 10:12:07
兄弟我也想要这方面的资料啊,帮你顶了
#3楼 得分:20回复于:2004-08-18 11:03:01
url                   是sp的地址 
subject           是用户收到PUSH后看到的文字,一般做标题用. 
starttime     和   endtime     没有用过/ 

移动和联通的130,131可以实现WAP   PUSH,因为PUSH要看手机终端能否支持. 

CDMA的没有做过. 

因为现在移动有WAP网关接入,这种通过SMS做PUSH已经不在允许范围之内了.计费也相对麻烦. 
#4楼 得分:0回复于:2004-08-18 11:50:49
这段代码网上都一直再传,,问一下,不知道有没有哪位,兄弟,, 
调试通过的啊,,说来看看
  • javavip用户头像
  • javavip
  • (☆★☆★☆★)
  • 等 级:
#5楼 得分:0回复于:2004-08-18 13:16:06
对PUSH好陌生,不知道哪里有资料。
#6楼 得分:0回复于:2004-08-18 13:54:52
上面这段代码,联通的C网肯定不行。
#7楼 得分:0回复于:2004-08-19 13:16:38
呵呵,移动的也可以用sms   进行wap   push
#8楼 得分:0回复于:2004-08-23 15:28:43
G网都是一样的 
部分移动联通 
不过C网的SI接口格式肯定不一样 
谁有C网PUSH的SI格式接口啊 
我急需 
hanj@gzjp.cn
#9楼 得分:0回复于:2004-08-24 15:52:13
通过了,还是从我们公司流传出去的。
#10楼 得分:0回复于:2004-08-24 15:57:59
刚开始时根据天堂鸟上的一篇帖子写的,经过测试可以的,不过只支持一部分手机,有些手机的发送参数不知道,收到的是乱码。
#11楼 得分:0回复于:2004-08-24 21:27:46
to     forrysoft(流浪) 
C网短信编码格式不一样。目前C网里支持SI的手机只有几款,以新上市的双模为主,所以用户数很有限。以前C网里的手机只支持的PUSH里有个序列号,通常除了WAP网关,别人是不知道的。所以,C网的目前没什么办法做短信PUSH。
  • cuipy用户头像
  • cuipy
  • (崔鹏宇)
  • 等 级:
#12楼 得分:0回复于:2004-09-02 17:47:03
这个编码后是不是就是cmpp里面的Msg_content呀?然后就能利用sms发送wap   push了?
#13楼 得分:0回复于:2004-09-14 08:49:44
xiexie   l

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多