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

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消息设置ServiceCodeStatusCode

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 log1Severe, 2Warning, 3Info, 4Config, 5Fine, 6Finer, (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:不加密,trueSSL加密-->

<UseSSL>1</UseSSL>

<!--应用程序方式的监听IP地址-->

    <ListenIP>102.102.102.102</ListenIP>

    <!--应用程序方式的监听端口-->

    <ListenPort>80</ListenPort>

    <!--日志文件的最大产生数量,单位为个,缺省值为100,取值范围为:19999-->

    <LogNum>100</LogNum>

<!--日志记录的产生时间间隔,单位为分,缺省值为60,取值范围为:11440-->

    <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继承得到的。主要有MM7SubmitReqMM7CancelReqMM7ReplaceReq等类,具体设置方法将分别进行介绍。

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("单个密送方地址");  //增加单个密送方地址

注:在设置或增加ToCcBcc至少需要设置其中一个,这些地址可能存在多

个地址或使用指示使用分发表的别名。可以标记仅供参考的地址。

submitReq.setLinkedID("链接标识");  /*设置链接标识,标识传送至VASP的上一

个有效消息的对应关系;可选*/

submitReq.setMessageClass("MM的类别");  /*设置MM的类别(例如,广告、

信息服务和计费),可选,具体有:AutoPersonalAdvertisementInformational*/

submitReq.setTimeStamp("提交MM的日期和时间");  /*提交MM的时间和日期

(时间戳),格式如2004-02-09T102107,可选*/

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的付费方,例如,发送方、接收方、发送方和接收方或两方均不付费,可选,0Sender1Recipients2Both3Neither4ThirdParty*/

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-09T102107,可选*/

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 发送多媒体消息

调用MM7Sendersend方法发送多媒体消息,返回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());

}

}

 

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