ISAG SMS下行开发实例(JAVA-Eclipse)

业务场景:SP向用户下发一条短信,并设置需要状态回执,用户收到短信后,网关将状态报告通知给CP/SP,CP/SP收到状态报告后,在控制台中打印出来。

开发平台:Eclipse

Step1:创建工程

创建之前请确认你的Eclipse已安装了WTP插件,没有安装的请去这里下:

http://download.actuatechina.com/eclipse/webtools/downloads/drops/R3.0/R-3.0.4-20090213193639/wtp-sdk-R-3.0.4-20090213193639.zip

新建一个Dynamic Web Project ,名字ctcc。

Target Runtime 选择你所使用的服务器版本,如TOMCAT 6.0,Finish.

Step2:导入并解析WSDL

接下来需要导入相关WSDL文件,右键点击工程->Import->File System,选择WSDL地址,导入所有的WSDL:

右键点击WSDL文件(后缀为wsdl的文件),选择Web Service->Generate Java bean skeleton生成接口代码框架。

成功后运行服务器,在IE中输入http://localhost:8080/ctcc/services应该会出现如下页面,显示现有的WEBSERVICE:

Step3:实现SendSms接口及SmsNotification接口

找到cn.com.chinatelecom.www.wsdl.ctcc.sms.send.v2_1.service.SendSmsBindingStub

类(请耐心寻找—。—),在createCall()开始加入下面语句:

org.apache.axis.client.Call _call = (org.apache.axis.client.Call) super.service.createCall(); //设置下行soap头 String fileName = System.getProperty("user.dir")+"//conf//downsoap.properties"; RouteSoapHeader rs = new RouteSoapHeader(fileName,0); rs.setDownSoapHeader(_call);

其中downsoap.properties是下行SOAPHEADER的配置文件,读出REQUESTSOAPHEADER的各项属性;RouteSoapHeader是SoapHeader的封装解析类,与上下行SOAPHEADER,MD5加密类和上面的WSDL一样由电信提供。


找到cn.com.chinatelecom.www.wsdl.ctcc.sms.notification.v2_1.service.SmsNotificationBindingImpl

类,在notifySmsDeliveryReceipt中添加如下通知代码:

System.out.println("=========调用notifySmsDeliveryStatus接口========="); System.out.println("correlator:" + correlator); System.out.println("Address:" + deliveryStatus.getAddress()); System.out.println("DeliveryStatus:" + deliveryStatus.getDeliveryStatus());

Step4:编写主程序

创建一个Test类,代码:

import cn.com.chinatelecom.www.wsdl.ctcc.sms.send.v2_1.service.SendSmsServiceLocator; import cn.com.chinatelecom.www.wsdl.ctcc.sms.send.v2_1._interface.SendSms; 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; import java.net.URL; public class Test { /** * @param args */ public static void main(String[] args) { try { //网关的url地址,该地址提供短信下发能力 URL url = new URL("http://localhost:8080/ctcc/services/SendSms"); SendSmsServiceLocator ssl = new SendSmsServiceLocator(); SendSms service = ssl.getSendSms(url); //部分业务逻辑处理在此省略... URI uri[] = new URI[1]; //手机号码 一般跟SOAP头中的OA一致,都需要以tel:开头 uri[0] = new URI("tel:16989095686"); //终端号码 String message = "你好,短信测试"; //短信内容 String senderName = "1062895932"; //接入码,终端收到短信后显示的主叫 //ChargingInformation 目前暂不处理,但需要填写,变量值值可随意填写 ChargingInformation charging = new ChargingInformation(); charging.setAmount(new java.math.BigDecimal(new java.math.BigInteger("0"))); charging.setCode("123"); charging.setCurrency("456"); charging.setDescription("nihao"); //receiptRequest作用是,当不为空时,则要求网关返回状态报告 SimpleReference receiptRequest = new SimpleReference(); /* * Correlator * 该标识唯一,相当于该次下发流程的流水号,由SP生成, * 将在状态报告接口notifySmsDeliveryReceipt中原样返回给SP,不超30位 * Endpoint InterfaceName目前这两个变量暂时不处理,可任意填写 */ receiptRequest.setCorrelator("354347657534345"); receiptRequest.setEndpoint(new URI("tel:123")); receiptRequest.setInterfaceName("sendSms"); //reqId 在请求下发成功后,网关会返回一个唯一标识 String reqId = service.sendSms(uri,senderName,charging,message,receiptRequest); System.out.println("reqId:" + reqId); } catch (Exception ex) { ex.printStackTrace(); } } }

Step5:运行

打开服务器并运行,程序会往http://localhost:8080/ctcc/services/SendSms发送短信,发送完毕后返回ReqId,手机收到短信后网关会通知http://localhost:8080/ctcc/services/SmsNotification

cn.com.chinatelecom.www.wsdl.ctcc.sms.notification.v2_1.service.SmsNotificationBindingImpl

类接到通知信息后就会调用notifySmsDeliveryReceipt方法(第三步已写好),输出Dilivery Statu等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值