| wap push格式   00???? ’SMSC Len。用手機上設置短信中心號碼  51???? ’submit type  00???? ’SMS_TP_Message_Reference type  0B??? ’對方電話的長度  A1???? ’Number type  13175639296F6?????? ’電話號碼:13573629696  00???? ’SMS_TP_PID  F5???? ’SMS DCS  A744???????? ’SMS available date  0B05040B8423F00003030101???????? ’Wap Push Header 1  29060603AE81EA8DCA?? 'Wap Push header 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? '字符串開始?  687474703A2F2F3231382E35392E3133382E35343A32303030? 'URL:???http://218.59.138.54:2000  00? 'URL 字符串結束?  01? '>?  03? '內容描述字符串開始?  '這里就是顯示給用戶的內容,用utf-8編碼。?  9A6C5EF6671D?????? '內容描述:馬延朝  00? '內容描述字符串結束?  01? '</indication>"?  01? '</si>?  可以只能顯示很少的漢字,請高手指點怎么分包發送更多的漢字?   ?   一下方法是經過驗證的。   TrxID? =一個隨機數  ??? fullStr = "0605040B8423F0" & TrxID & "0601AE"  ??? fullStr = fullStr & "02056A0045C6080C03"  ??? fullStr = fullStr & StrToHex(TheURL, 2)  ??? fullStr = fullStr & "001103" & "0102"  ??? fullStr = fullStr & "40494400080AC307" & Format(Now, "yyyymmddhhmmss")  ??? fullStr = fullStr & "10C304" & "20990101" & "0103"  ??? fullStr = fullStr & StrToHex(MServiceName, 2) & "000101"     分段發送的   例如??URL:wap.gd.monternet.com/?userType=B&serviceID=04020028?提示信息:神秘激情地帶,江湖兒女情長神秘激情地帶,江湖兒女情長神秘激情地帶,江湖兒女情長?  第一包:  0B05040B8423F0000355020155060403AE81EA02056A0045C60C037761702E67642E6D6F6E74657  26E65742E636F6D2F3F75736572547970653D42267365727669636549443D303430323030323800  070103E7A59EE7A798E6BF80E68385E59CB0E5B8A62CE6B19FE6B996E584BFE5A5B3E68385E995BF  E7A59EE7A798E6BF80E68385E59CB0E5B8A62C??  第二包:  0B05040B8423F00003550202E6B19FE6B996E584BFE5A5B3E68385E995BFE7A59EE7A798E6BF80E6  8385E59CB0E5B8A62CE6B19FE6B996E584BFE5A5B3E68385E995BF000101 ,解釋可參考WDP WSP,我就不具體說了     0B是頭的總長度  05040B8423F0是固定的,表示接下來是一個WAP PUSH  分包的關鍵是0003550201,對應GSM 03.40里9.2.3.24.1,00表示是Concatenated Short Messages,03是長度,55是reference number,樓主在這兒固定編碼會有問題的,如果同時下發兩條這樣的多包短信給同一個手機,手機就區分不開了,02表示分成2個短信發送,01是當前包的序號。     一個擴展包wappush包是這么構成的  WDP + WSP + SI/SL   如果長度超常(短信一個包的Content不要超過140)   就要分解成   WDP1 + (WSP+SI/SL)的part 1  WDP2 + (WSP+SI/SL)的part 2  ...  WDPN + (WSP+SI/SL)的part N   ?   如單包  WDP: 06 05 04 0B 84 23 F0  WSP: ...  SI/SL:...   雙包是  第1包  WDP: 0B 05 04 0B 84 23 F0 00 03 01 02 01  Part1: ...   // 00 - UDH IE Tag  // 03 - UDH SAR IE Length  // 01 - Refrence  // 02 - Total Packet  // 01 - Current Packet   第2包  WDP: 0B 05 04 0B 84 23 F0 00 03 01 02 02  Part2:...     WDP參考相關文檔。   ?   =====================================================  首先,構造一個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字節/兩條短信的時候該怎么辦。   ?   另轉載 Wap push over sms 實踐        通過短信進行點對點的WAP PUSH,本質上來說應該是發送一個wap頁面(WBXML)到接收方,里面含有一段文字和一個url鏈接。   在發送端采用PDU模式發送,編碼是UCS2。   ?   整個發送的包大部分內容都是固定的,只需要對幾個地方根據希望發送的內容進行一下替換即可。   ?   我參考的例子是這樣的,只用說明中紅色的部分是需要變化的:   0051000BA13108086406F600F5A7850B05040B8423F0000303010129060603AE81EA8DCA02056A00  45C6080C033231312e3133362e3135332e33302f776170707573682f70757368496e6465782e6a737  03f7075736849643d3035303531313134313630353231000103E8AFB7E782B9E587BBE4BBA5E4B88B  E993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9000101     00?SMSC?地址信息的長度?00表示用手機上設置短信中心號碼,PDU?串的“SMSC?址格式”段和“SMSC?地址”段將省去?  51?基本參數(TP-MTI/VFP)?不要求發送回復?  00?消息基準值(TP-MR)?  0B?對方電話的長度?  A1?目標地址格式?A1表示為國內格式?  3108086406F6?目標地址,補‘F’湊成偶數位后奇偶位互換?(因為手機號碼是11位,需要補一個F,再將奇偶位互換,比如12345678901需要變成2143658709F1)  00?協議標識(TP-PID)?是普通GSM?類型,點到點方式?  F5?用戶信息編碼方式?(TP-DCS)?  A7?有效期(TP-VP)?  85?用戶信息長度(TP-UDL)?(此處是從下面的0B開始所有的字節數/2對應的十六進制數)  0B?WAP?PUSH頭部的總長度?  05040B8423F0表示接下來是一個WAP?PUSH?  00?表示是Concatenated?Short?Messages?  03?長度?  03?reference?number?  01?表示分成1個短信發送?  01?當前包的序號?  29060603AE81EA8DCA?WSP?  02?標記位?  05?-//WAPFORUM//DTD?SI?1.0//EN?  6A?UTF-8?  00?標記開始?  45?  C6?  08?  0C?href=\"http://?  03?字符串開始?  3231312e3133362e3135332e33302f776170707573682f70757368496e6465782e6a73703f7075736  849643d3035303531313134313630353231?URL?(編碼過的URL,不帶http://)  00?URL?字符串結束?  01?>?  03?內容描述字符串開始?  E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9?內容描述字符串?(編碼過的文字內容)  00?內容描述字符串結束?  01?  01?   ?   ?   AT指令發送時:   at+cmgf=0?//設置發送為二進制模式   OK   at+cmgs=93?//十進制的數字,值為?(上面生成的一大串的字節數/2)-1,還沒搞清為啥要減一   > 0051000BA1。。。。。。。(就是那一大串了)?Ctrl+Z   +CMGS: 14   OK   ?   發送成功   |