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