《中國(guó)移動(dòng)MM7API用戶手冊(cè).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《中國(guó)移動(dòng)MM7API用戶手冊(cè).doc(31頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
中移MM7 API用戶手冊(cè)
中國(guó)移動(dòng)MM7 API用戶手冊(cè)V1.5.1
中國(guó)移動(dòng)MM7 API用戶手冊(cè)
版本:V1.5.3
中國(guó)移動(dòng)集團(tuán)公司
修改記錄
文件編號(hào)
版本號(hào)
擬制人/
修改人
擬制/修改日期
更改理由
主要更改內(nèi)容
(寫(xiě)要點(diǎn)即可)
V1.1
胡冬梅
2004.03.22
修改、整理
V1.2
胡冬梅
2004.04.14
增加內(nèi)容
增加安裝說(shuō)明
V1.3
胡冬梅
2004.4.21
增加內(nèi)容
增加狀態(tài)碼等說(shuō)明
V1.5.1
胡冬梅
2004.5.12
增加內(nèi)容
增加獲取API版本信息、API返回碼說(shuō)明等
目 錄
1.概述 5
2.概念 5
2.1企業(yè)代碼 5
2.2服務(wù)代碼 6
2.3業(yè)務(wù)代碼 6
2.3.1上行業(yè)務(wù)的業(yè)務(wù)代碼規(guī)范 6
2.3.2下行業(yè)務(wù)的業(yè)務(wù)代碼規(guī)范 8
2.4操作指令碼 10
2.5下行業(yè)務(wù) 11
2.6上行業(yè)務(wù) 11
2.7遞送報(bào)告 11
3.安裝方法 11
3.1 MM7 API的使用 11
3.2配置文件的設(shè)置 11
4.開(kāi)發(fā)方法 13
4.1 VASP接收傳送請(qǐng)求(上行業(yè)務(wù)) 13
4.1.1 方式1:普通應(yīng)用程序中的用法 13
4.1.2 方式2:Web應(yīng)用程序中的用法 14
4.2發(fā)送多媒體消息的過(guò)程(下行業(yè)務(wù)) 15
4.2.1準(zhǔn)備 15
4.2.2創(chuàng)建待發(fā)送消息 16
4.2.2.1 創(chuàng)建提交增值業(yè)務(wù)的多媒體消息(MM7SubmitReq) 16
4.2.2.2 創(chuàng)建取消多媒體消息(MM7CancelReq) 18
4.2.2.3 創(chuàng)建替換多媒體消息(MM7ReplaceReq) 18
4.2.3 創(chuàng)建消息內(nèi)容體 19
4.2.4 發(fā)送多媒體消息 20
4.2.5發(fā)送MM7SubmitReq消息到移動(dòng)終端實(shí)例 20
4.3 VASP接收傳送消息以及發(fā)送提交消息實(shí)例 21
4.4 VASP接收狀態(tài)報(bào)告(上行業(yè)務(wù)) 24
4.4.1方式1:普通應(yīng)用程序中的用法 24
4.4.2方式2:Web應(yīng)用程序中的用法 25
4.5 VASP接收讀后回復(fù)報(bào)告(上行業(yè)務(wù)) 26
4.5.1方式1:普通應(yīng)用程序中的用法 26
4.5.2方式2:Web應(yīng)用程序中的用法 27
4.6 發(fā)送取消消息(下行業(yè)務(wù)) 27
4.7 發(fā)送替換消息(下行業(yè)務(wù)) 28
5.開(kāi)發(fā)過(guò)程中需用的一些Status解釋 29
5.1 關(guān)于VASP接收到消息后設(shè)置返回響應(yīng)(Res)的狀態(tài)碼及狀態(tài)報(bào)告的解釋 29
5.2 關(guān)于VASP收到DeliverReq中MMStatus的解釋 30
5.3 關(guān)于VASP收到ReadReplyReq中ReadStatus的解釋 30
6.獲取MM7 API版本信息的方法 30
7. MM7 API返回StatusCode說(shuō)明 30
1.概述
該文檔說(shuō)明了SP如何使用中國(guó)移動(dòng)集團(tuán)公司的MM7 API程序與彩信中心進(jìn)行對(duì)接,實(shí)現(xiàn)MM7接口的通訊,開(kāi)發(fā)增值業(yè)務(wù)應(yīng)用。
該MM7 API是使用純Java開(kāi)發(fā)的,使用的JDK的版本為JDK1.4.0。所以使用該API進(jìn)行開(kāi)發(fā)時(shí),要求使用的JDK版本必須是JDK1.4.0以上版本。該API所使用的通訊承載協(xié)議是HTTP/1.1。
縮略詞:
MM: Multimedia Message (多媒體消息)
MMS: Multimedia Message Service(多媒體消息服務(wù))
MMSC: Multimedia Message Service Center(多媒體消息服務(wù)中心)
VAS: Value Added Service(增值業(yè)務(wù))
SP: Service Provider(業(yè)務(wù)提供商)
HTTP: Hypertext Transfer Protocol(超文本傳輸協(xié)議)
2.概念
2.1企業(yè)代碼
企業(yè)代碼是企業(yè)身份的標(biāo)識(shí),網(wǎng)絡(luò)中地址翻譯、計(jì)費(fèi)、結(jié)算等均以企業(yè)代碼為依據(jù)。企業(yè)代碼的數(shù)據(jù)需要在MMSC和BOSS系統(tǒng)中進(jìn)行配置。企業(yè)代碼以數(shù)字表示,共6位,從“8XY000”至“8XY999”,其中“XY”為各移動(dòng)分公司代碼。
彩信全網(wǎng)業(yè)務(wù)的SP企業(yè)代碼為8XY001-8XY999。(目前短信全網(wǎng)業(yè)務(wù)的企業(yè)代碼為9XY001-9XY500,WAP全網(wǎng)業(yè)務(wù)的企業(yè)代碼為9XY501-9XY999。)彩信地方業(yè)務(wù)的SP企業(yè)代碼由各地方移動(dòng)公司按照業(yè)務(wù)許可的順序依次分配制定,“XY”具體分配情況見(jiàn)相關(guān)表格。
2.2服務(wù)代碼
服務(wù)代碼是:用戶使用彩信的發(fā)送、上傳等上行類業(yè)務(wù)時(shí),需要輸入的接收方號(hào)碼;或SP在根據(jù)用戶的點(diǎn)播請(qǐng)求在向用戶發(fā)送、下載等下行類業(yè)務(wù)時(shí),用戶終端中顯示的發(fā)送方的號(hào)碼。服務(wù)代碼的數(shù)據(jù)需要在MMSC上進(jìn)行配置,用于路由的查找和狀態(tài)報(bào)告的返回。服務(wù)代碼以數(shù)字表示。
全國(guó)業(yè)務(wù)的服務(wù)代碼長(zhǎng)度統(tǒng)一為4位,即“1000”-“9999”;本地業(yè)務(wù)服務(wù)代碼長(zhǎng)度統(tǒng)一為5位,即“01000”-“09999”。
以下號(hào)碼或號(hào)段暫不分配:
13XX(XX=00-99)、20XX(XX=01-99)、168X(X=0-9)、186X(X=0-9)、1258/1259、172X(X=0-9)、6XXX、7XXX。
上述代碼的分配和使用情況均可以在www.monternet.com上查詢。
如果SP已經(jīng)開(kāi)展了短信等業(yè)務(wù),原則上彩信的服務(wù)代碼依照SP原有的服務(wù)代碼進(jìn)行分配,以保證用戶的使用習(xí)慣。
目前全網(wǎng)業(yè)務(wù)的服務(wù)代碼,由集團(tuán)公司統(tǒng)一分配。
2.3業(yè)務(wù)代碼
業(yè)務(wù)代碼表示業(yè)務(wù)類別,并且區(qū)分不同業(yè)務(wù)的信息服務(wù)費(fèi)。業(yè)務(wù)代碼的數(shù)據(jù)需要在MMSC和BOSS系統(tǒng)中進(jìn)行配置。業(yè)務(wù)代碼用數(shù)字表示,并且不能使用000。
為便于進(jìn)行業(yè)務(wù)統(tǒng)計(jì)和分析,業(yè)務(wù)代碼盡量按照不同的業(yè)務(wù)分類如下:
互聯(lián)網(wǎng)點(diǎn)播類: 以1開(kāi)頭
WAP點(diǎn)播類: 以2開(kāi)頭
短信點(diǎn)播類: 以3開(kāi)頭
STK點(diǎn)播類: 以4開(kāi)頭
彩信點(diǎn)播類: 以0開(kāi)頭
業(yè)務(wù)代碼在遵循原則的前提下其余內(nèi)容由SP自己制定。
2.3.1上行業(yè)務(wù)的業(yè)務(wù)代碼規(guī)范
上行業(yè)務(wù)的業(yè)務(wù)代碼為三位,其構(gòu)成如下:
第1位:0、7、9開(kāi)頭的業(yè)務(wù)代碼保留,其他代碼由彩信SP自行編排。
第2~3位:由彩信SP自行編排
特例:如果用戶直接給四位服務(wù)代碼發(fā)送上行彩信,系統(tǒng)會(huì)默認(rèn)加上業(yè)務(wù)代碼“0”,該業(yè)務(wù)代碼默認(rèn)開(kāi)通,僅用于上行彩信到服務(wù)代碼。
2.3.2下行業(yè)務(wù)的業(yè)務(wù)代碼規(guī)范
下行業(yè)務(wù)的業(yè)務(wù)代碼為六位,其構(gòu)成如下:
第1位:功能標(biāo)識(shí)位,目前有如下兩種選擇:
l 1,代表一般下行業(yè)務(wù)
l 7,代表用于“先機(jī)時(shí)代”項(xiàng)目中手機(jī)內(nèi)置并參與渠道分成的業(yè)務(wù)
l 6,代表用于集團(tuán)客戶應(yīng)用的業(yè)務(wù)(免費(fèi))
其他數(shù)字目前保留。
第2位:彩信業(yè)務(wù)一級(jí)分類,具體如下面表格:
第3位:彩信業(yè)務(wù)二級(jí)分類,具體如下面表格:
一級(jí)分類及標(biāo)識(shí)代碼
二級(jí)分類及標(biāo)識(shí)代碼
新聞天氣(1)
天氣預(yù)報(bào)(1)
熱點(diǎn)快訊(2)
社會(huì)新聞(3)
體育新聞(4)
娛樂(lè)新聞(5)
財(cái)經(jīng)新聞(6)
綜合新聞(0)
游戲娛樂(lè)(2)
聊天交友(1)
笑話幽默(2)
彩信游戲(3)
影音視線(4)
互動(dòng)有獎(jiǎng)(5)
五花八門(0)
時(shí)尚生活(3)
時(shí)尚有約(1)
車迷世界(2)
文化教育(3)
情感畫(huà)廊(4)
愛(ài)情家庭(5)
兩性健康(6)
證券財(cái)經(jīng)(7)
位置服務(wù)(8)
五花八門(0)
卡通動(dòng)漫(4)
歐美(1)
日本(2)
韓國(guó)(3)
港臺(tái)(4)
本地原創(chuàng)(5)
五花八門(0)
彩信鈴聲(5)
明星專輯(1)
精品影視(2)
流行音樂(lè)(3)
古典音樂(lè)(4)
卡拉OK(5)
特殊音效(6)
五花八門(0)
彩圖動(dòng)畫(huà)(6)
人物剪影(1)
動(dòng)物一族(2)
美麗心情(3)
溫馨祝福(4)
電影名畫(huà)(5)
體育縱橫(6)
大千世界(7)
3D動(dòng)畫(huà)(8)
五花八門(0)
彩信DIY(7)
賀卡類(1)
形象類(2)
文字類(3)
五花八門(0)
特色用途(0)
免費(fèi)客服(1)
優(yōu)惠套餐(2)
第4位:業(yè)務(wù)模式位,各個(gè)模式及其數(shù)字標(biāo)識(shí)如下:
l 1:按條點(diǎn)播
l 2:按條定制
l 3:包月定制
l 4:包月點(diǎn)播
第5~6位:由彩信SP自行編排
2.4操作指令碼
操作指令碼是指用戶通過(guò)短信點(diǎn)播或定制彩信業(yè)務(wù)時(shí),在短信的信息體內(nèi)輸入的代碼,或用戶上行發(fā)送彩信時(shí),在彩信消息體內(nèi)的文本信息中輸入的代碼。操作指令碼用于標(biāo)識(shí)對(duì)彩信的處理方式。此代碼出現(xiàn)在短信或彩信的消息體內(nèi),由SP自行處理,彩信中心不負(fù)責(zé)處理該代碼。
在短信中輸入的操作指令碼應(yīng)嚴(yán)格區(qū)分用戶是點(diǎn)播、定制短信業(yè)務(wù)還是彩信業(yè)務(wù)。如果用戶通過(guò)短信點(diǎn)播或定制彩信業(yè)務(wù),操作指令碼應(yīng)以CX開(kāi)頭。
如:用戶在短信或彩信文本信息體內(nèi)輸入“CX XW”發(fā)送至8888,就是定制新浪提供的彩信圖片新聞業(yè)務(wù)。
2.5下行業(yè)務(wù)
由SP主動(dòng)發(fā)起的業(yè)務(wù)。這里主要指SP向MMSC發(fā)起的業(yè)務(wù)。
2.6上行業(yè)務(wù)
SP被動(dòng)接收的業(yè)務(wù)。這里主要指從MMSC那里接收業(yè)務(wù)。
2.7遞送報(bào)告
報(bào)告是接收方(終端)對(duì)接收到消息的處理方式信息。遞送報(bào)告指MMSC在獲取這個(gè)報(bào)告后把這個(gè)信息發(fā)送給發(fā)送方(SP)。接收方對(duì)消息的處理可能是接收或者拒絕等。處理流程如下:
l SP發(fā)送消息(通過(guò)MMSC)給終端,并且要求遞送報(bào)告;
l 終端接收到消息后做相應(yīng)處理(接收或拒絕);
l MMSC把終端對(duì)消息的處理信息(遞送報(bào)告)發(fā)送給SP。
3.安裝方法
這里主要介紹一下如何將MM7 API運(yùn)用到VASP自己開(kāi)發(fā)的程序中以及在配置文件中需要注意修改的地方。
3.1 MM7 API的使用
在VASP用Java開(kāi)發(fā)自己程序時(shí),只要將中國(guó)移動(dòng)集團(tuán)公司提供的mm7api.jar和lib下的所有的Jar文件加入到classpath中即可。
3.2配置文件的設(shè)置
配置文件mm7Config.xml需要根據(jù)SP情況進(jìn)行修改。
1
zxme
zxme
100000000
c:\vas_log
1
100
120
200
UTF-8
1
/mm7
192.120.231.180
true
192.120.231.228
80
50
10000
5
一些地方需要進(jìn)行修改,下面一一說(shuō)明:
1
表示VASP作為服務(wù)端接收消息時(shí)是否進(jìn)行鑒權(quán)或進(jìn)行什么樣的鑒權(quán),0表示不鑒權(quán),1表示進(jìn)行基本鑒權(quán),2表示進(jìn)行摘要鑒權(quán)。
zxme
zxme
表示彩信中心對(duì)VASP進(jìn)行鑒權(quán)時(shí)的用戶名和密碼,同時(shí)也是VASP對(duì)接入的彩信中心進(jìn)行鑒權(quán)時(shí)用戶名和密碼,是雙向的,要VASP和MMSC雙方進(jìn)行約定。
c:\vas_log
表示日志存放的路徑,在Windows操作系統(tǒng)下和Linux下是不一樣的,要注意進(jìn)行修改。
1
表示MMSC網(wǎng)關(guān)的序號(hào),需要從MMSC處得到。
/mm7
192.120.231.180
分別表示MMSC網(wǎng)關(guān)的URL地址和IP(或主機(jī)名),也需要MMSC處得到。這里也可以填成ip:port。例如:192.120.231.180:8080,不填端口號(hào)使用默認(rèn)端口號(hào)80。
192.120.231.228
80
表示當(dāng)VASP用應(yīng)用程序方式進(jìn)行接收消息時(shí)的監(jiān)聽(tīng)地址和端口號(hào)。
以上為這個(gè)配置文件中主要需要注意修改的地方,當(dāng)然其他的內(nèi)容也可以進(jìn)行修改,如
1可以根據(jù)需要進(jìn)行修改,0表示不產(chǎn)生日志;1表示產(chǎn)生錯(cuò)誤日志;3表示產(chǎn)生信息日志;6表示產(chǎn)生完整信息日志。
90000
表示設(shè)置發(fā)送的超時(shí)時(shí)間,若發(fā)送超過(guò)這個(gè)時(shí)間,則自動(dòng)進(jìn)行重新發(fā)送。
2
表示設(shè)置重發(fā)的次數(shù),建議在3次以下,一般用2次即可。
4.開(kāi)發(fā)方法
這里主要介紹從SP接收MMSC發(fā)過(guò)來(lái)的DeliverReq開(kāi)始,到SP發(fā)送SubmitReq到MMSC的整個(gè)流程,SP所需要做的工作。
4.1 VASP接收傳送請(qǐng)求(上行業(yè)務(wù))
VASP接收可以有兩種方式:
l 如果SP的增值應(yīng)用是一個(gè)普通應(yīng)用程序,可以使用方式1,即接收代理會(huì)自動(dòng)打開(kāi)一個(gè)監(jiān)聽(tīng)端口,啟動(dòng)一個(gè)監(jiān)聽(tīng)線程來(lái)接收來(lái)自MMSC的多媒體消息;
l 如果SP的增值應(yīng)用是一個(gè)Web應(yīng)用,則可以使用方式2,即接收代理作為一個(gè)Servlet運(yùn)行,并自動(dòng)處理從HttpRequest中搜索數(shù)據(jù),并解碼成多媒體消息。
4.1.1 方式1:普通應(yīng)用程序中的用法
public class MyReceiver extends MM7Receiver
{
//定義一個(gè)MM7DeliverReq,以便得到MMSC發(fā)過(guò)來(lái)的Deliver消息。(必備)
public static MM7DeliverReq deliverReq = new MM7DeliverReq();
//Main方法
public static void main(String[] args)
{
//初始化VASP
MM7Config mm7Config = new MM7Config(“./config/mm7Config.xml”);
//設(shè)置ConnConfig.xml文件的路徑
mm7Config.setConnConfigName(“./config/ConnConfig.xml”); //必備
//構(gòu)造MyReceiver
MyReciever receiver = new MyReceiver();
myReceiver.setConfig(mm7Config); //必備
//創(chuàng)建MM7消息發(fā)送接口
MM7Sender mm7Sender = new MM7Sender(mm7Config);
//啟動(dòng)接收器
receiver.start();
for(;;);
}
public MM7VASPRes doDeliver(MM7DeliverReq request)
{
/*接收從MMSC發(fā)過(guò)來(lái)的傳送消息,以便取出其中的部分值構(gòu)造提交消息或得到一些有用
信息,如MMSC的標(biāo)識(shí)符等*/
deliverReq = request;
System.out.println(“收到手機(jī)”+request.getSender()
+“提交的消息,標(biāo)題為:”+request.getSubject());
System.out.println("MMSC的標(biāo)識(shí)符為:"+request. GetMMSRelayServerID())?;
//SP需要進(jìn)行一些處理,例如構(gòu)建MM7DeliverRes消息,設(shè)置ServiceCode或StatusCode
MM7DeliverRes mm7DeliverRes = new MM7DeliverRes();
mm7DeliverRes.setServiceCode("服務(wù)代碼"); //設(shè)置ServiceCode,可選
mm7DeliverRes.setStatusCode(MMConstants.RequestStatus.SUCCESS)?;/*設(shè)置請(qǐng)求完成狀
態(tài),必備,以便表明SP已經(jīng)接收到傳送消息。一般設(shè)1000。*/
mm7DeliverRes.setStatusText("所用狀態(tài)文本說(shuō)明"); /*設(shè)置所用狀態(tài)的文本說(shuō)明,
應(yīng)限定請(qǐng)求狀態(tài),可選*/
//返回給MM7 API,以便API將MM7DeliverRes返回給MMSC。
return(MM7VASPRes)mm7DeliverRes;
}
}
4.1.2 方式2:Web應(yīng)用程序中的用法
public class MyReceiver extends MM7RecieveServlet
{
public MM7VASPRes doDeliver(MM7DeliverReq request)
{
System.out.println(“收到手機(jī)”+request.getSender()
+“提交的消息,標(biāo)題為:”+request.getSubject());
System.out.println("MMSC的標(biāo)識(shí)符為:"+request. GetMMSRelayServerID())?;
//SP需要進(jìn)行一些處理,例如構(gòu)建MM7DeliverRes消息,設(shè)置ServiceCode或StatusCode
MM7DeliverRes mm7DeliverRes = new MM7DeliverRes();
mm7DeliverRes.setServiceCode("服務(wù)代碼"); //設(shè)置ServiceCode,可選
mm7DeliverRes.setStatusCode(MMConstants.RequestStatus.SUCCESS)?;/*設(shè)置請(qǐng)求完成狀
態(tài),必備,以便表明SP已經(jīng)接收到傳送消息。一般設(shè)1000。*/
mm7DeliverRes.setStatusText("所用狀態(tài)文本說(shuō)明"); /*設(shè)置所用狀態(tài)的文本說(shuō)明,
應(yīng)限定請(qǐng)求狀態(tài),可選*/
//返回給MM7 API,以便API將MM7DeliverRes返回給MMSC。
return(MM7VASPRes)mm7DeliverRes;
}
}
4.2發(fā)送多媒體消息的過(guò)程(下行業(yè)務(wù))
發(fā)送多媒體消息的過(guò)程就是使用MM7 API組織消息,并通過(guò)MM7Sender發(fā)送給MMSC的過(guò)程。主要步驟如下:
4.2.1準(zhǔn)備
1. 初始化VASP
初始化VASP使用的是MM7Config類,該類定義了有關(guān)本VASP和對(duì)應(yīng)的MMSC的配置信息。系統(tǒng)在初始化時(shí),必須對(duì)該對(duì)象進(jìn)行定義,它將用于通信類的控制。
MM7Config mm7Config = new MM7Config("./config/mm7Config.xml ");
其中mm7Config.xml為配置文件,其格式如下:
0
1111
11111111
100000
c:\vas_log
1
UTF-8
/mm7
202.202.202.202
910010
true
102.102.102.102
80
100
10
1000
2. 創(chuàng)建MM7消息發(fā)送接口:
創(chuàng)建發(fā)送接口使用的是MM7Sender類,其中已經(jīng)封裝了和MMSC連接的通訊機(jī)制,使用時(shí)只要?jiǎng)?chuàng)建它的一個(gè)帶MM7Config參數(shù)的實(shí)例即可。
MM7Sender mm7Sender = new MM7Sender(mm7Config);
4.2.2創(chuàng)建待發(fā)送消息
創(chuàng)建待發(fā)送消息使用的類均是由MM7Message繼承得到的。主要有MM7SubmitReq、MM7CancelReq、MM7ReplaceReq等類,具體設(shè)置方法將分別進(jìn)行介紹。
4.2.2.1 創(chuàng)建提交增值業(yè)務(wù)的多媒體消息(MM7SubmitReq)
1.創(chuàng)建消息對(duì)象
MM7SubmitReq submitReq = new MM7SubmitReq();
2.設(shè)置消息屬性
submitReq.setTransactionID("關(guān)聯(lián)標(biāo)識(shí)");
/*設(shè)置MM7_submit.REQ/MM7_submit.RES對(duì)的標(biāo)識(shí),必備*/
submitReq.setVASPID("SP代碼")?; //設(shè)置SP代碼,必備
submitReq.setVASID("服務(wù)代碼")?; //設(shè)置服務(wù)代碼,必備
submitReq.setServiceCode("業(yè)務(wù)代碼"); //設(shè)置業(yè)務(wù)代碼,必備
submitReq.setSenderAddress("MM始發(fā)方的地址");設(shè)置MM始發(fā)方的地址(填寫(xiě)SP的服務(wù)代碼,或者填寫(xiě)讓用戶回復(fù)SP的長(zhǎng)號(hào)碼,長(zhǎng)號(hào)碼構(gòu)成:SP的服務(wù)代碼+業(yè)務(wù)代碼+操作碼),必備
submitReq.setChargedPartyID(“付費(fèi)方手機(jī)號(hào)碼”); //設(shè)置付費(fèi)方的手機(jī)號(hào)碼,必備
submitReq.setTo("接收方地址"); //設(shè)置接收方MM的地址
submitReq.addTo("單個(gè)接受方地址"); //增加單個(gè)接受方地址
submitReq.setCc("抄送方地址"); //設(shè)置抄送方MM的地址
submitReq.addCc("單個(gè)抄送方地址"); //增加單個(gè)抄送方地址
submitReq.setBcc("密送方地址"); //設(shè)置密送方MM的地址
submitReq.addBcc("單個(gè)密送方地址"); //增加單個(gè)密送方地址
注:在設(shè)置或增加To,Cc和Bcc時(shí),至少需要設(shè)置其中一個(gè),這些地址可能存在多
個(gè)地址或使用指示使用分發(fā)表的別名??梢詷?biāo)記僅供參考的地址。
submitReq.setLinkedID("鏈接標(biāo)識(shí)"); /*設(shè)置鏈接標(biāo)識(shí),標(biāo)識(shí)傳送至VASP的上一
個(gè)有效消息的對(duì)應(yīng)關(guān)系;可選*/
submitReq.setMessageClass("MM的類別"); /*設(shè)置MM的類別(例如,廣告、
信息服務(wù)和計(jì)費(fèi)),可選,具體有:Auto、Personal、Advertisement、Informational*/
submitReq.setTimeStamp("提交MM的日期和時(shí)間"); /*提交MM的時(shí)間和日期
(時(shí)間戳),格式如2004-02-09T10:21:07,可選*/
submitReq.setExpiryDate("指定超時(shí)時(shí)間"); /*設(shè)置MM指定的超時(shí)時(shí)間(絕對(duì)
或相對(duì)時(shí)間),可選*/
submitReq.setEarliestDeliveryTime("最早理想時(shí)間"); /*設(shè)置將MM傳送給接收
方的最早理想時(shí)間(絕對(duì)或相對(duì)時(shí)間),可選*/
submitReq.setDeliveryReport("發(fā)送報(bào)告的請(qǐng)求"); /*設(shè)置是否需要發(fā)送報(bào)告的請(qǐng)
求(boolean值),可選*/
submitReq.setReadReply("需要讀取報(bào)告的請(qǐng)求"); /*設(shè)置通過(guò)請(qǐng)求傳送一個(gè)讀
取報(bào)告進(jìn)行確認(rèn),可選*/
submitReq.setReplyCharging("應(yīng)答計(jì)費(fèi)的請(qǐng)求"); /*設(shè)置應(yīng)答計(jì)費(fèi)的請(qǐng)求
(boolean值),可選*/
submitReq.setReplyDeadline("提交應(yīng)答的最遲時(shí)間"); /*設(shè)置在應(yīng)答計(jì)費(fèi)的情況
下,向接收方提交應(yīng)答的最遲時(shí)間(絕對(duì)或相對(duì)時(shí)間),可選*/
submitReq.setReplyChargingSize("應(yīng)答MM的最大大小"); /*設(shè)置在應(yīng)答計(jì)費(fèi)的情況下,提供給接收方的應(yīng)答MM的最大大小,可選*/
submitReq.setPriority("消息的優(yōu)先級(jí)"); /*消息的優(yōu)先級(jí)(重要性)(0=最低優(yōu)先級(jí),1=正常,2=緊急),byte類型的值,可選*/
submitReq.setSubject("多媒體消息的標(biāo)題"); /*設(shè)置多媒體消息的標(biāo)題,可選*/
submitReq.setAllowAdaptations("VASP是否允許修改內(nèi)容"); /*設(shè)置VASP是否允許修改內(nèi)容(boolean值,默認(rèn)為真),可選*/
submitReq.setChargedParty("VASP所提交MM的付費(fèi)方"); /*設(shè)置VASP所提交MM的付費(fèi)方,例如,發(fā)送方、接收方、發(fā)送方和接收方或兩方均不付費(fèi),可選,0:Sender、1:Recipients、2:Both、3:Neither、4:ThirdParty*/
submitReq.setContent("多媒體消息的內(nèi)容"); /*設(shè)置多媒體消息的內(nèi)容,可選,注意當(dāng)要設(shè)置時(shí),一定要設(shè)置其ContentType。*/
submitReq.setDistributionIndicator("是否可重新分發(fā)"); /*設(shè)置VASP是否可重新分發(fā)MM的內(nèi)容(boolean值,true為可以,false為不可以),可選*/
4.2.2.2 創(chuàng)建取消多媒體消息(MM7CancelReq)
1.創(chuàng)建消息對(duì)象
MM7CancelReq cancelReq = new MM7CancelReq();
2. 設(shè)置消息屬性
cancelReq.setTransactionID("關(guān)聯(lián)標(biāo)識(shí)"); /*MM7_cancel.REQ/MM7_cancel.RES
對(duì)的標(biāo)識(shí),必備*/
cancelReq.setVASPID("SP代碼"); /*設(shè)置SP代碼,可選*/
cancelReq.setVASID("服務(wù)代碼"); /*設(shè)置服務(wù)代碼,可選*/
cancelReq.setSenderAddress("MM始發(fā)方地址"); /*設(shè)置MM始發(fā)方地址,可選*/
cancelReq.setMessageID("待取消的消息的標(biāo)識(shí)符"); /*設(shè)置待取消的消息的標(biāo)識(shí)符,必備*/
4.2.2.3 創(chuàng)建替換多媒體消息(MM7ReplaceReq)
1.創(chuàng)建消息對(duì)象
MM7ReplaceReq replaceReq = new MM7ReplaceReq();
2. 設(shè)置消息屬性
replaceReq.setTransactionID("關(guān)聯(lián)標(biāo)識(shí)");
/*設(shè)置MM7_replace.REQ/MM7_replace.RES對(duì)的標(biāo)識(shí),必備*/
replaceReq.setVASPID("SP代碼"); /*設(shè)置SP代碼,可選*/
replaceReq.setVASID("服務(wù)代碼"); /*設(shè)置服務(wù)代碼,可選*/
replaceReq.setMessageID("被當(dāng)前消息所替換的消息的標(biāo)識(shí)符"); /*被當(dāng)前消息
所替換的消息的標(biāo)識(shí)符,必備*/
replaceReq.setServiceCode("業(yè)務(wù)代碼"); /*設(shè)置業(yè)務(wù)代碼,可選*/
replaceReq.setTimeStamp("提交MM的日期和時(shí)間"); /*設(shè)置提交MM的時(shí)間和
日期(時(shí)間戳),格式如2004-02-09T10:21:07,可選*/
replaceReq.setEarliestDeliveryTime("最早理想時(shí)間"); /*設(shè)置將MM傳送給接收
方的最早理想時(shí)間(絕對(duì)或相對(duì)時(shí)間),可選*/
replaceReq.setReadReply("需要讀取報(bào)告的請(qǐng)求"); /*設(shè)置通過(guò)請(qǐng)求傳送一個(gè)讀
取報(bào)告進(jìn)行確認(rèn)(boolean值,true為需要,false為不需要),可
選*/
replaceReq.setAllowAdaptations("VASP是否允許修改內(nèi)容"); /*設(shè)置VASP是否允許
修改內(nèi)容(boolean值,默認(rèn)為真),可選*/
replaceReq.setContent("多媒體消息內(nèi)容"); /*設(shè)置多媒體消息的內(nèi)容,可選,注意當(dāng)要
設(shè)置時(shí),一定要設(shè)置其ContentType。*/
replaceReq.setDistributionIndicator("是否可重新分發(fā)"); /*設(shè)置VASP是否可重新分發(fā)
MM的內(nèi)容(boolean值,true為可以,false為不可以),可選*/
4.2.3 創(chuàng)建消息內(nèi)容體
每個(gè)消息內(nèi)容體就是一個(gè)MMContent實(shí)例,可以添加多個(gè)消息內(nèi)容體,但是所有消息內(nèi)容體大小之和不能超過(guò)MMSC允許大?。壳白畲笾С?28K)。
MMContent content = new MMContent();
/**設(shè)置附件的類型,若不包含SMIL格式的文件,則設(shè)置類型為MMConstants.ContentType. MULTIPART_MIXED,若包含SMIL格式的文件,則設(shè)置類型為MMConstants.ContentType. MULTIPART_RELATED*/
content.setContentType(MMConstants.ContentType. MULTIPART_MIXED);
/**添加類型為Gif的附件一 */
MMContent sub1 = MMContent.createFromFile("f:\\yellow.gif");
sub1.setContentID("1.gif"); //可以不設(shè)
/**設(shè)置子附件的類型,有兩種設(shè)置方式:一種是在setContentType里面填寫(xiě)MMConstants.ContentType里面定義的常量,另一種是在setContentType里面填寫(xiě)一個(gè)String的類型,如text/plain等。*/
sub1.setContentType(MMConstants.ContentType.GIF); //一定要設(shè)置
content.addSubContent(sub1);
/**添加類型為Txt的附件二*/
MMContent sub2 = MMContent.createFromString("This is a Test2!");
sub2.setContentType(MMConstants.ContentType. TEXT); //一定要設(shè)置
sub2.setContentID("2.txt");
content.addSubContent(sub2);
/**將附件進(jìn)行設(shè)置,設(shè)需發(fā)送消息為MM7SubmitReq*/
submitReq.setContent(content);
4.2.4 發(fā)送多媒體消息
調(diào)用MM7Sender的send方法發(fā)送多媒體消息,返回MM7RSRes類型的消息。舉例,發(fā)送MM7SubmitReq類型的消息:
MM7RSRes res = mm7Sender.send(submitReq); //其它消息與此類似
4.2.5發(fā)送MM7SubmitReq消息到移動(dòng)終端實(shí)例
package com.cmcc.mm7.vasp.conf;
import com.cmcc.mm7.vasp.message.*;
import com.cmcc.mm7.vasp.service.MM7Sender;
import com.cmcc.mm7.vasp.common.*;
import java.io.*;
public class VaspSendTest {
public static void main(String[] args) {
MM7Config mm7Config = new MM7Config("./config/mm7Config.xml");
mm7Config. setConnConfigName("./config/ConnConfig.xml");
MM7Sender mm7Sender = new MM7Sender(mm7Config);
MM7SubmitReq submit = new MM7SubmitReq();
submit.setTransactionID("11111111");
submit.addTo("13915002000");
submit.setVASID("1234");
submit.setServiceCode("123");
submit.setSubject("測(cè)試");
MMContent content = new MMContent();
content.setContentType(MMConstants.ContentType. MULTIPART_MIXED);
MMContent sub1 = MMContent.createFromFile("f:\\yellow.gif");
sub1.setContentID("1.gif");
sub1.setContentType(MMConstants.ContentType.GIF);
content.addSubContent(sub1);
MMContent sub2 = MMContent.createFromString("This is a Test2!");
sub2.setContentID("2.txt");
sub2.setContentType(MMConstants.ContentType. TEXT);
content.addSubContent(sub2);
submit.setContent(content);
MM7RSRes res = mm7Sender.send(submit);
System.out.println("res.statuscode=" + res.getStatusCode() +
";res.statusText=" + res.getStatusText());
}
}
4.3 VASP接收傳送消息以及發(fā)送提交消息實(shí)例
舉一個(gè)實(shí)例說(shuō)明VASP構(gòu)建MM7SubmitReq,發(fā)送給MMSC,并得到返回消息,通過(guò)StatusCode判斷,本次發(fā)送是否成功,若成功,得到MessageID,以便以后希望取消或替換該消息時(shí)用。
public class MyReceiver extends MM7Receiver
{
//定義一個(gè)MM7DeliverReq,以便得到MMSC發(fā)過(guò)來(lái)的Deliver消息。(必備)
public static MM7DeliverReq deliverReq = new MM7DeliverReq();
//Main方法
public static void main(String[]args)
{
//初始化VASP
MM7Config mm7Config = new MM7Config(“../config/mm7Config.xml”);
//設(shè)置ConnConfig.xml文件的路徑
mm7Config.setConnConfigName(“../config/ConnConfig.xml”); //必備
//構(gòu)造MyReceiver
MyReciever receiver = new MyReceiver();
receiver.setConfig(mm7Config); //必備
//創(chuàng)建MM7消息發(fā)送接口
MM7Sender mm7Sender = new MM7Sender(mm7Config);
//啟動(dòng)接收器
receiver.start();
//接收MM7DeliverReq完畢,開(kāi)始構(gòu)造MM7SubmitReq
//有兩種可能,一種是MM7SubmitReq完全由SP構(gòu)造,另一種是SP用接收到的
//MM7DeliverReq的部分內(nèi)容進(jìn)行填充。
MM7SubmitReq submitReq = new MM7SubmitReq();
submitReq.setVASPID("SP代碼")?; //必備
submitReq.setVASID("服務(wù)代碼")?; //必備
submitReq.setServiceCode("業(yè)務(wù)代碼"); //必備
submitReq.setSenderAddress("MM始發(fā)方的地址"); /*必備,若想從MM7DeliverReq中獲得,
則應(yīng)按下面的方式設(shè): submitReq.setSenderAddress(deliverReq.getSender());*/
submitReq.setTo("接收方地址"); /*若想從MM7DeliverReq中獲得,則應(yīng)按下面的方式設(shè):
submitReq.setTo(deliverReq.getTo());*/
submitReq.addTo("單個(gè)接受方地址"); //增加單個(gè)接受方地址
submitReq.setCc("抄送方地址"); /*若想從MM7DeliverReq中獲得,則應(yīng)按下面的方式設(shè):
submitReq.setCc(deliverReq.getCc())?;*/
submitReq.addCc("單個(gè)抄送方地址"); //增加單個(gè)抄送方地址
submitReq.setBcc("密送方地址"); /*若想從MM7DeliverReq中獲得,則應(yīng)按下面的方式設(shè):
submitReq.setBcc(deliverReq.getBcc())?;*/
submitReq.addBcc("單個(gè)密送方地址"); //增加單個(gè)密送方地址
submitReq.setLinkedID("鏈接標(biāo)識(shí)"); /*可選,若想從MM7DeliverReq中獲得,則應(yīng)按
下面的方式設(shè):submitReq.setLinkedID(deliverReq.getLinkedID())?;*/
submitReq.setMessageClass("MM的類別"); /*可選*/
submitReq.setTimeStamp("提交MM的日期和時(shí)間"); /*格式如2004-02-09T10:21:07,
可選*/
submitReq.setExpiryDate("指定超時(shí)時(shí)間"); /*可選*/
submitReq.setEarliestDeliveryTime("最早理想時(shí)間"); /*可選*/
submitReq.setDeliveryReport("發(fā)送報(bào)告的請(qǐng)求"); /* boolean值,可選*/
submitReq.setReadReply("需要讀取報(bào)告的請(qǐng)求"); /*可選*/
submitReq.setReplyCharging("應(yīng)答計(jì)費(fèi)的請(qǐng)求"); /*boolean值,可選*/
submitReq.setReplyDeadline("提交應(yīng)答的最遲時(shí)間"); /*可選*/
submitReq.setReplyChargingSize("應(yīng)答MM的最大大小"); /*可選*/
submitReq.setPriority("消息的優(yōu)先級(jí)"); /* 0=最低優(yōu)先級(jí),1=正常,2=緊急,byte類型的值,可選,若想從MM7DeliverReq中獲得,則應(yīng)按下面的方式設(shè):
submitReq.setPriority(deliverReq.getPriority());*/
submitReq.setSubject("多媒體消息的標(biāo)題"); /*可選,若想從MM7DeliverReq中獲得,則
應(yīng)按下面的方式設(shè):SubmitReq.setSubject(deliverReq.getSubject());*/
submitReq.setAllowAdaptations("VASP是否允許修改內(nèi)容"); // boolean值,默認(rèn)為真,可選
submitReq.setChargedParty("VASP所提交MM的付費(fèi)方"); /*可選*/
submitReq.setChargedPartyID("chargedPartyID"); /*必備*/
submitReq.setDistributionIndicator("是否可重新分發(fā)"); /*boolean值,true為可以,false為不
可以,可選*/
//開(kāi)始創(chuàng)建多媒體消息的內(nèi)容
/*每個(gè)消息內(nèi)容體就是一個(gè)MMContent實(shí)例,可以添加多個(gè)消息內(nèi)容體,但是所有消息內(nèi)容體大小之和不能超過(guò)MMSC允許大小(目前最大支持128K)。*/
MMContent content = new MMContent();
content.setContentType(MMConstants.ContentType.MULTIPART_RELATED);
/**添加類型為Gif的附件一 */
MMContent sub1 = MMContent.createFromFile("f:\\yellow.gif");
sub1.setContentID("1.gif"); //可以不設(shè)
sub1.setContentType(MMConstants.ContentType.GIF); /*可以不設(shè),但這個(gè)不設(shè)的話,
ContentID必須設(shè)*/
content.addSubContent(sub1);
/**添加類型為Txt的附件二*/
MMContent sub2 = MMContent.createFromString("This is a Test2!");
sub2.setContentID("2.txt");
sub2.setContentType(MMConstants.ContentType. TEXT);
content.addSubContent(sub2);
/**將附件進(jìn)行設(shè)置*/
submitReq.setContent("多媒體消息的內(nèi)容"); /*可選,也可以從MM7DeliverReq中獲得多
媒體消息的內(nèi)容,submitReq.setContent(deliverReq.getContent());*/
/*發(fā)送MM7SubmitReq消息,正確返回MM7SubmitRes消息,錯(cuò)誤返回MM7RSError消息,
其它消息與此類似*/
MM7RSRes res = mm7Sender.send(submitReq);
/*可以根據(jù)StatusCode來(lái)判斷本次發(fā)送是否成功,若成功能得到MessageID等信息。
StatusCode可能得到的值,具體可見(jiàn)本文中的請(qǐng)求狀態(tài)碼說(shuō)明。*/
if(res instanceof MM7SubmitRes)
{
MM7SubmitRes submitRes = (MM7SubmitRes)r
鏈接地址:http://www.820124.com/p-1561310.html