中国移动MM7 API用户手册(六)

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-09T102107

可选*/

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("是否可重新分发"); /*booleantrue为可以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消息,设置ServiceCodeStatusCode

MM7DeliverRes mm7DeliverRes = new MM7DeliverRes();

mm7DeliverRes.setServiceCode("服务代码"); //可选

mm7DeliverRes.setStatusCode(MMConstants.RequestStatus.SUCCESS); /*必备以便表明

SP已经接收到传送消息。成功可设1000*/

        mm7DeliverRes.setStatusText("所用状态文本说明");  /*可选*/

        //返回给MM7 API以便APIMM7DeliverRes返回给MMSC

return(MM7VASPRes)mm7DeliverRes;

    }

}

posted @ 2011-04-22 18:54  永不放弃-Jack wu  阅读(445)  评论(0编辑  收藏  举报