4.1.2 方式2:Web应用程序中的用法 public class MyReceiver extends MM7RecieveServlet { public MM7VASPRes doDeliver(MM7DeliverReq request) { System.out.println(“收到手机”+request.getSender() +“提交的消息,标题为:”+request.getSubject()); System.out.println("MMSC的标识符为:"+request. GetMMSRelayServerID()) ; //SP需要进行一些处理,例如构建MM7DeliverRes消息,设置ServiceCode或StatusCode MM7DeliverRes mm7DeliverRes = new MM7DeliverRes(); mm7DeliverRes.setServiceCode("服务代码"); //设置ServiceCode,可选 mm7DeliverRes.setStatusCode(MMConstants.RequestStatus.SUCCESS) ;/*设置请求完成状 态,必备,以便表明SP已经接收到传送消息。一般设1000。*/ mm7DeliverRes.setStatusText("所用状态文本说明"); /*设置所用状态的文本说明, 应限定请求状态,可选*/ //返回给MM7 API,以便API将MM7DeliverRes返回给MMSC。 return(MM7VASPRes)mm7DeliverRes; } } 4.2发送多媒体消息的过程(下行业务) 发送多媒体消息的过程就是使用MM7 API组织消息,并通过MM7Sender发送给MMSC的过程。主要步骤如下: 4.2.1准备 1. 初始化VASP 初始化VASP使用的是MM7Config类,该类定义了有关本VASP和对应的MMSC的配置信息。系统在初始化时,必须对该对象进行定义,它将用于通信类的控制。 MM7Config mm7Config = new MM7Config("./config/mm7Config.xml "); 其中mm7Config.xml为配置文件,其格式如下: <?xml version="1.0"?> <vasp:MM7Config xmlns:vasp="http://mms.chinamobile.com/mm7ConfigSchema"> <!--鉴权方式,1为基本鉴权,2为摘要鉴权,0为不使用鉴权--> <AuthenticationMode>1</AuthenticationMode> <!--设置用户名, 必须为被授权的用户(4位)--> <UserName>1111</UserName> <!--设置VASP的密码(6位)--> <Password>11111111</Password> <!—设置允许的最大消息的大小(以字节为单位),目前最大支持128K--> <MaxMessageSize>100000</MaxMessageSize> <!--设置日志路径--> <LogPath>c:\vas_log</LogPath> <!--设置日志级别,8 个级别(0)No log(1)Severe, (2)Warning, (3)Info, (4)Config, (5)Fine, (6)Finer, (7)Finest--> <logLevel>1</logLevel> <!--设置指定用于对消息编码的字符集(缺省值为UTF-8)--> <Charset>UTF-8</Charset> <!--MMSC网关的URL地址--> <mmscURL>/mm7</mmscURL> <!-- MMSC网关的IP或主机名列表--> <mmscIP>202.202.202.202</mmscIP> <!—MMSC网关的序号à <MmscID>910010</MmscID> <!--是否启用SSL加密,false:不加密,true:SSL加密--> <UseSSL>1</UseSSL> <!--应用程序方式的监听IP地址--> <ListenIP>102.102.102.102</ListenIP> <!--应用程序方式的监听端口--> <ListenPort>80</ListenPort> <!--日志文件的最大产生数量,单位为个,缺省值为100,取值范围为:1至9999。--> <LogNum>100</LogNum> <!--日志记录的产生时间间隔,单位为分,缺省值为60,取值范围为:1至1440--> <LogInterval>10</LogInterval> <!--日志文件大小的最大限制,单位为K,缺省值为500K,最大值为10000K。--> <LogSize>1000</LogSize> </vasp:MM7Config> 2. 创建MM7消息发送接口: 创建发送接口使用的是MM7Sender类,其中已经封装了和MMSC连接的通讯机制,使用时只要创建它的一个带MM7Config参数的实例即可。 MM7Sender mm7Sender = new MM7Sender(mm7Config); 4.2.2创建待发送消息 创建待发送消息使用的类均是由MM7Message继承得到的。主要有MM7SubmitReq、MM7CancelReq、MM7ReplaceReq等类,具体设置方法将分别进行介绍。 4.2.2.1 创建提交增值业务的多媒体消息(MM7SubmitReq) 1.创建消息对象 MM7SubmitReq submitReq = new MM7SubmitReq(); 2.设置消息属性 submitReq.setTransactionID("关联标识"); /*设置MM7_submit.REQ/MM7_submit.RES对的标识,必备*/ submitReq.setVASPID("SP代码") ; //设置SP代码,必备 submitReq.setVASID("服务代码") ; //设置服务代码,必备 submitReq.setServiceCode("业务代码"); //设置业务代码,必备 submitReq.setSenderAddress("MM始发方的地址");设置MM始发方的地址(填写SP的服务代码,或者填写让用户回复SP的长号码,长号码构成:SP的服务代码+业务代码+操作码),必备 submitReq.setChargedPartyID(“付费方手机号码”); //设置付费方的手机号码,必备 submitReq.setTo("接收方地址"); //设置接收方MM的地址 submitReq.addTo("单个接受方地址"); //增加单个接受方地址 submitReq.setCc("抄送方地址"); //设置抄送方MM的地址 submitReq.addCc("单个抄送方地址"); //增加单个抄送方地址 submitReq.setBcc("密送方地址"); //设置密送方MM的地址 submitReq.addBcc("单个密送方地址"); //增加单个密送方地址 注:在设置或增加To,Cc和Bcc时,至少需要设置其中一个,这些地址可能存在多 个地址或使用指示使用分发表的别名。可以标记仅供参考的地址。 submitReq.setLinkedID("链接标识"); /*设置链接标识,标识传送至VASP的上一 个有效消息的对应关系;可选*/ submitReq.setMessageClass("MM的类别"); /*设置MM的类别(例如,广告、 信息服务和计费),可选,具体有:Auto、Personal、Advertisement、Informational*/ submitReq.setTimeStamp("提交MM的日期和时间"); /*提交MM的时间和日期 (时间戳),格式如2004-02-09T10:21:07,可选*/ submitReq.setExpiryDate("指定超时时间"); /*设置MM指定的超时时间(绝对 或相对时间),可选*/ submitReq.setEarliestDeliveryTime("最早理想时间"); /*设置将MM传送给接收 方的最早理想时间(绝对或相对时间),可选*/ submitReq.setDeliveryReport("发送报告的请求"); /*设置是否需要发送报告的请 求(boolean值),可选*/ submitReq.setReadReply("需要读取报告的请求"); /*设置通过请求传送一个读 取报告进行确认,可选*/ submitReq.setReplyCharging("应答计费的请求"); /*设置应答计费的请求 (boolean值),可选*/ submitReq.setReplyDeadline("提交应答的最迟时间"); /*设置在应答计费的情况 下,向接收方提交应答的最迟时间(绝对或相对时间),可选*/ submitReq.setReplyChargingSize("应答MM的最大大小"); /*设置在应答计费的情况下,提供给接收方的应答MM的最大大小,可选*/ submitReq.setPriority("消息的优先级"); /*消息的优先级(重要性)(0=最低优先级,1=正常,2=紧急),byte类型的值,可选*/ submitReq.setSubject("多媒体消息的标题"); /*设置多媒体消息的标题,可选*/ submitReq.setAllowAdaptations("VASP是否允许修改内容"); /*设置VASP是否允许修改内容(boolean值,默认为真),可选*/ submitReq.setChargedParty("VASP所提交MM的付费方"); /*设置VASP所提交MM的付费方,例如,发送方、接收方、发送方和接收方或两方均不付费,可选,0:Sender、1:Recipients、2:Both、3:Neither、4:ThirdParty*/ submitReq.setContent("多媒体消息的内容"); /*设置多媒体消息的内容,可选,注意当要设置时,一定要设置其ContentType。*/ submitReq.setDistributionIndicator("是否可重新分发"); /*设置VASP是否可重新分发MM的内容(boolean值,true为可以,false为不可以),可选*/ 4.2.2.2 创建取消多媒体消息(MM7CancelReq) 1.创建消息对象 MM7CancelReq cancelReq = new MM7CancelReq(); 2. 设置消息属性 cancelReq.setTransactionID("关联标识"); /*MM7_cancel.REQ/MM7_cancel.RES 对的标识,必备*/ cancelReq.setVASPID("SP代码"); /*设置SP代码,可选*/ cancelReq.setVASID("服务代码"); /*设置服务代码,可选*/ cancelReq.setSenderAddress("MM始发方地址"); /*设置MM始发方地址,可选*/ cancelReq.setMessageID("待取消的消息的标识符"); /*设置待取消的消息的标识符,必备*/ 4.2.2.3 创建替换多媒体消息(MM7ReplaceReq) 1.创建消息对象 MM7ReplaceReq replaceReq = new MM7ReplaceReq(); 2. 设置消息属性 replaceReq.setTransactionID("关联标识"); /*设置MM7_replace.REQ/MM7_replace.RES对的标识,必备*/ replaceReq.setVASPID("SP代码"); /*设置SP代码,可选*/ replaceReq.setVASID("服务代码"); /*设置服务代码,可选*/ replaceReq.setMessageID("被当前消息所替换的消息的标识符"); /*被当前消息 所替换的消息的标识符,必备*/ replaceReq.setServiceCode("业务代码"); /*设置业务代码,可选*/ replaceReq.setTimeStamp("提交MM的日期和时间"); /*设置提交MM的时间和 日期(时间戳),格式如2004-02-09T10:21:07,可选*/ replaceReq.setEarliestDeliveryTime("最早理想时间"); /*设置将MM传送给接收 方的最早理想时间(绝对或相对时间),可选*/ replaceReq.setReadReply("需要读取报告的请求"); /*设置通过请求传送一个读 取报告进行确认(boolean值,true为需要,false为不需要),可 选*/ replaceReq.setAllowAdaptations("VASP是否允许修改内容"); /*设置VASP是否允许 修改内容(boolean值,默认为真),可选*/ replaceReq.setContent("多媒体消息内容"); /*设置多媒体消息的内容,可选,注意当要 设置时,一定要设置其ContentType。*/ replaceReq.setDistributionIndicator("是否可重新分发"); /*设置VASP是否可重新分发 MM的内容(boolean值,true为可以,false为不可以),可选*/ 4.2.3 创建消息内容体 每个消息内容体就是一个MMContent实例,可以添加多个消息内容体,但是所有消息内容体大小之和不能超过MMSC允许大小(目前最大支持128K)。 MMContent content = new MMContent(); /**设置附件的类型,若不包含SMIL格式的文件,则设置类型为MMConstants.ContentType. MULTIPART_MIXED,若包含SMIL格式的文件,则设置类型为MMConstants.ContentType. MULTIPART_RELATED*/ content.setContentType(MMConstants.ContentType. MULTIPART_MIXED); /**添加类型为Gif的附件一 */ MMContent sub1 = MMContent.createFromFile("f:\\yellow.gif"); sub1.setContentID("1.gif"); //可以不设 /**设置子附件的类型,有两种设置方式:一种是在setContentType里面填写MMConstants.ContentType里面定义的常量,另一种是在setContentType里面填写一个String的类型,如text/plain等。*/ sub1.setContentType(MMConstants.ContentType.GIF); //一定要设置 content.addSubContent(sub1); /**添加类型为Txt的附件二*/ MMContent sub2 = MMContent.createFromString("This is a Test2!"); sub2.setContentType(MMConstants.ContentType. TEXT); //一定要设置 sub2.setContentID("2.txt"); content.addSubContent(sub2); /**将附件进行设置,设需发送消息为MM7SubmitReq*/ submitReq.setContent(content); 4.2.4 发送多媒体消息 调用MM7Sender的send方法发送多媒体消息,返回MM7RSRes类型的消息。举例,发送MM7SubmitReq类型的消息: MM7RSRes res = mm7Sender.send(submitReq); //其它消息与此类似 4.2.5发送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()); } }

评论