4.3 VASP接收传送消息以及发送提交消息实例
举一个实例说明VASP构建MM7SubmitReq,发送给MMSC,并得到返回消息,通过StatusCode判断,本次发送是否成功,若成功,得到MessageID,以便以后希望取消或替换该消息时用。
public class MyReceiver extends MM7Receiver
{
//定义一个MM7DeliverReq,以便得到MMSC发过来的Deliver消息。(必备)
public static MM7DeliverReq deliverReq = new MM7DeliverReq();
//Main方法
public static void main(String[]args)
{
//初始化VASP
MM7Config mm7Config = new MM7Config(“../config/mm7Config.xml”);
//设置ConnConfig.xml文件的路径
mm7Config.setConnConfigName(“../config/ConnConfig.xml”); //必备
//构造MyReceiver
MyReciever receiver = new MyReceiver();
receiver.setConfig(mm7Config); //必备
//创建MM7消息发送接口
MM7Sender mm7Sender = new MM7Sender(mm7Config);
//启动接收器
receiver.start();
//接收MM7DeliverReq完毕,开始构造MM7SubmitReq
//有两种可能,一种是MM7SubmitReq完全由SP构造,另一种是SP用接收到的
//MM7DeliverReq的部分内容进行填充。
MM7SubmitReq submitReq = new MM7SubmitReq();
submitReq.setVASPID("SP代码") ; //必备
submitReq.setVASID("服务代码") ; //必备
submitReq.setServiceCode("业务代码"); //必备
submitReq.setSenderAddress("MM始发方的地址"); /*必备,若想从MM7DeliverReq中获得,
则应按下面的方式设: submitReq.setSenderAddress(deliverReq.getSender());*/
submitReq.setTo("接收方地址"); /*若想从MM7DeliverReq中获得,则应按下面的方式设:
submitReq.setTo(deliverReq.getTo());*/
submitReq.addTo("单个接受方地址"); //增加单个接受方地址
submitReq.setCc("抄送方地址"); /*若想从MM7DeliverReq中获得,则应按下面的方式设:
submitReq.setCc(deliverReq.getCc()) ;*/
submitReq.addCc("单个抄送方地址"); //增加单个抄送方地址
submitReq.setBcc("密送方地址"); /*若想从MM7DeliverReq中获得,则应按下面的方式设:
submitReq.setBcc(deliverReq.getBcc()) ;*/
submitReq.addBcc("单个密送方地址"); //增加单个密送方地址
submitReq.setLinkedID("链接标识"); /*可选,若想从MM7DeliverReq中获得,则应按
下面的方式设:submitReq.setLinkedID(deliverReq.getLinkedID()) ;*/
submitReq.setMessageClass("MM的类别"); /*可选*/
submitReq.setTimeStamp("提交MM的日期和时间"); /*格式如2004-02-09T10:21:07,
可选*/
submitReq.setExpiryDate("指定超时时间"); /*可选*/
submitReq.setEarliestDeliveryTime("最早理想时间"); /*可选*/
submitReq.setDeliveryReport("发送报告的请求"); /* boolean值,可选*/
submitReq.setReadReply("需要读取报告的请求"); /*可选*/
submitReq.setReplyCharging("应答计费的请求"); /*boolean值,可选*/
submitReq.setReplyDeadline("提交应答的最迟时间"); /*可选*/
submitReq.setReplyChargingSize("应答MM的最大大小"); /*可选*/
submitReq.setPriority("消息的优先级"); /* 0=最低优先级,1=正常,2=紧急,byte类型的值,可选,若想从MM7DeliverReq中获得,则应按下面的方式设:
submitReq.setPriority(deliverReq.getPriority());*/
submitReq.setSubject("多媒体消息的标题"); /*可选,若想从MM7DeliverReq中获得,则
应按下面的方式设:SubmitReq.setSubject(deliverReq.getSubject());*/
submitReq.setAllowAdaptations("VASP是否允许修改内容"); // boolean值,默认为真,可选
submitReq.setChargedParty("VASP所提交MM的付费方"); /*可选*/
submitReq.setChargedPartyID("chargedPartyID"); /*必备*/
submitReq.setDistributionIndicator("是否可重新分发"); /*boolean值,true为可以,false为不
可以,可选*/
//开始创建多媒体消息的内容
/*每个消息内容体就是一个MMContent实例,可以添加多个消息内容体,但是所有消息内容体大小之和不能超过MMSC允许大小(目前最大支持128K)。*/
MMContent content = new MMContent();
content.setContentType(MMConstants.ContentType.MULTIPART_RELATED);
/**添加类型为Gif的附件一 */
MMContent sub1 = MMContent.createFromFile("f:\\yellow.gif");
sub1.setContentID("1.gif"); //可以不设
sub1.setContentType(MMConstants.ContentType.GIF); /*可以不设,但这个不设的话,
ContentID必须设*/
content.addSubContent(sub1);
/**添加类型为Txt的附件二*/
MMContent sub2 = MMContent.createFromString("This is a Test2!");
sub2.setContentID("2.txt");
sub2.setContentType(MMConstants.ContentType. TEXT);
content.addSubContent(sub2);
/**将附件进行设置*/
submitReq.setContent("多媒体消息的内容"); /*可选,也可以从MM7DeliverReq中获得多
媒体消息的内容,submitReq.setContent(deliverReq.getContent());*/
/*发送MM7SubmitReq消息,正确返回MM7SubmitRes消息,错误返回MM7RSError消息,
其它消息与此类似*/
MM7RSRes res = mm7Sender.send(submitReq);
/*可以根据StatusCode来判断本次发送是否成功,若成功能得到MessageID等信息。
StatusCode可能得到的值,具体可见本文中的请求状态码说明。*/
if(res.getStatusCode() == MMConStants.RequestStatus.SUCCESS)
{
MM7SubmitRes submitRes = (MM7SubmitRes)res;
System.out.println(“StatusText=”+ submitRes.getStatusText());
System.out.println(“MessageID=”+ submitRes .getMessageID());
}
}
public MM7VASPRes doDeliver(MM7DeliverReq request)
{
/*接收从MMSC发过来的传送消息,以便取出其中的部分值构造提交消息或得到一些有用
信息,如MMSC的标识符等*/
deliverReq = request;
System.out.println(“收到手机”+request.getSender()
+“提交的消息,标题为:”+request.getSubject());
System.out.println("MMSC的标识符为:"+request. GetMMSRelayServerID()) ;
//SP需要进行一些处理,例如构建MM7DeliverRes消息,设置ServiceCode或StatusCode
MM7DeliverRes mm7DeliverRes = new MM7DeliverRes();
mm7DeliverRes.setServiceCode("服务代码"); //可选
mm7DeliverRes.setStatusCode(MMConstants.RequestStatus.SUCCESS); /*必备,以便表明
SP已经接收到传送消息。成功可设1000。*/
mm7DeliverRes.setStatusText("所用状态文本说明"); /*可选*/
//返回给MM7 API,以便API将MM7DeliverRes返回给MMSC。
return(MM7VASPRes)mm7DeliverRes;
}
}