上上周和赵工调试了isag的发送短信的接口。
总共实现了几个功能:
1、通过页面向notification发送消息,桩作为客户端
2、作为服务端,接收send接口、receive接口的消息,并正确返回响应
3、支持多线程向notification接口发送消息,线程数、时间间隔在web.xml中配置
第一次使用到webService和电信的isag接口,觉得有必要总结一下
1.如何调用接口
SmsNotificationServiceLocator snsl = new SmsNotificationServiceLocator();
SmsNotification sn = snsl.getSmsNotification(url);
2.添加soapheader和解析soapheader
isag的soapheader分为两个RequestSOAPHeader(下行)和NotifySOAPHeader(上行)。
客户端使用RoutSOAPHeader类来初始化下行header和上行header。
服务端使用DecodeSOAPHeader类来解析上下行header。
3.如何获得notifysmsdeliverystatus的deliverystatus对象
deliverystatus的构造函数是protected,要想获得其对象,调用其两个静态函数,其实最终还是调用的静态函数formValue(String value)
4.messagecontext
要想获得soapheader,HttpServletRequest 或者httpresponse对象,都需要先获得messagecontext对象
//获得messagecontext对象
MessageContext context = MessageContext.getCurrentContext();
//获得SOAPEnvelope 对象以及SOAPHeaderElement
SOAPEnvelope requestEnvelope = context.getRequestMessage().getSOAPEnvelope();
SOAPHeaderElement requestSequenceIdHeader = requestEnvelope.getHeaderByName(
"http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1", "RequestSOAPHeader");
接下来可以调用decodesoapheader来解析其元素了
//获得HttpServletRequest 对象
HttpServletRequest request = (HttpServletRequest) context.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
//获得HttpServletResponse 对象
HttpServletResponse response = (HttpServletResponse)context.getProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE);