日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/3/26 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过短信网关发送Wappush消息? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何通過短信網關發送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消息?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。