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; } }

评论