简单彩信下行业务开发指南
简单彩信下行业务开发指南概述
本小节主要介绍彩信下行业务的开发。
业务场景:SP向用户下发一条彩信,彩信附件为一个gif格式的图片,并设置需要状态回执,用户收到彩信并提取后,
SAG将状态报告通知给CP/SP,CP/SP收到状态报告后,将报告内容打印输出。
开发步骤如下:
1 创建MMS Web Service,可以参照SMS的Web Service的创建,直接将彩信的wsdl导入并生成彩信的Web Service即可。
2 在Package test下新建一个名称为SendMmsMessage的类。
3 在SendMmsMessage类中,顶端(package语句之后)加入如下语句,包含所需类:
import java.net.URL;
import cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messaging.send.v2_2.service.SendMessageServiceLocator;
import cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messagi ... te***ce.SendMessage;
import cn.com.chinatelecom.www.schema.ctcc.multimedia_messaging.v2_2.MessagePriority;
import cn.com.chinatelecom.www.schema.ctcc.common.v2_1.ChargingInformation;
import cn.com.chinatelecom.www.schema.ctcc.common.v2_1.SimpleReference;
import org.apache.axis.types.URI;
4 在main函数中加入如下代码,参数值可以按要求更改。
try {
URL url = new URL("http://10.40.43.71:8083/cucWeb/services/SendMessage");
SendMessageServiceLocator locator = new SendMessageServiceLocator();
SendMessage service = locator.getSendMessage(url);
org.apache.axis.types.URI[] addresses = new org.apache.axis.types.URI[1];
String num = "16901710921";
addresses[0] = new org.apache.axis.types.URI("tel:" + num);
String senderAddress = "96666";
String subject = "test";
MessagePriority priority = MessagePriority.Normal;
ChargingInformation charging = new ChargingInformation();
charging.setAmount(new java.math.BigDecimal("100"));
charging.setCode("abc");
charging.setCurrency("yes");
charging.setDescription("jifei");
SimpleReference receiptRequest = new SimpleReference();
receiptRequest.setCorrelator("123");
receiptRequest.setEndpoint(new URI("tel:" + num));
receiptRequest.setInte***ceName("xxx");
String res = service.sendMessage( addresses, senderAddress, subject, priority, charging, receiptRequest);
System.out.println("res:" + res);
}
catch (Exception ex) {
ex.printStackTrace();
}
5 按照中国联通规范,CP/SP进行SAG API调用时,要携带soap头信息。
在cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messagi ... dMessageBindingStub
类的createCall()函数中加入如下语句:
org.apache.axis.client.Call _call = (org.apache.axis.client.Call) super.service.createCall();
//以下设置soap头的语句,G:\\downsoap.propreties为soap头配置文件
test.RouteSoapHeader soap = new test.RouteSoapHeader("G:\\downsoap.propreties");
soap.setSoapHeader(_call);
6 彩信业务中彩信附件通过soap附件传递。
在cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messagi ... dMessageBindingStub
类的sendMessage函数中添加如下代码:
setRequestHeaders(_call);
setAttachments(_call);
//添加附件,附件地址可以更改
String fileName1 = new String("E:\\_code\\attachments\\3.gif");
java.io.File file1 = new java.io.File(fileName1);
javax.activation.DataHandler attachmentFile1 = new javax.activation.DataHandler(new javax.activation.FileDataSource(file1));
_call.addAttachmentPart(attachmentFile1);
7修改notification接口,编辑类cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messagi ... ficationBindingImpl,
在notifyMessageDeliveryReceipt函数中增加以下语句,当SP收到状态报告的时候打印输出,
修改完毕后,重新启动tomcat服务,接口就可以重新发布了,如图:
System.out.println("==开始调用MMS北向接口notifyMessageDeliveryReceipt==");
System.out.println("correlator:" + correlator);
System.out.println("deliveryStatus.getAddress():" + deliveryStatus.getAddress());
System.out.println("deliveryStatus.getDeliveryStatus():" + deliveryStatus.getDeliveryStatus().toString());
8 使用刚建立好的彩信下发程序,如下图,右键选中SendMmsMessage.java文件,点击Run using defaults命令,
程序往"http://10.40.58.252:8086/spWeb/services/SendMessage"发送一条彩信,发送成功以后,可以看到sag
给SP返回的reqId,如下图:
9 当终端收到彩信并提取后,SAG递送状态报告给SP,状态报告内容表明彩信发送成功:
至此,彩信下行业务的开发调试已经完成。