📄 smssender.java
字号:
}
mt.setStatus("S");
Timestamp time = new Timestamp(System.currentTimeMillis());
mt.setRespTime(time.toLocaleString());
objqueue.add(mt);
mtlog.info("从滑动窗口中移除:mt.getMsgID() = " + mt.getMsgID());
flowWindow.remove(mt.getMsgID());
mtlog.info("mt 发送结果 :" + sendResult);
} catch (Exception e) {
mtlog.error("Exception : ", e);
}
}
}
} else {
mtlog.debug("滑动窗口的值过大 " + flowWindow.size() + "<" + controlSize
+ " isSendFlag=false;");
}
} finally {
SendMonitor.getInstance().setSendMTFlag(false);
}
}
public synchronized void stopSendMT() {
LoggerConstant.stat_log.info("停止 mt 发送...");
if (timer != null) {
timer.cancel();
timer = null;
}
}
/*
* 9.5.1.1.1 输入:sendSmsRequest
* sendSms(DestinationAddresses,SenderName,Charging,Message,ReceiptRequest)
* 参数 类型 描述 DestinationAddresses xsd:anyURI [0..unbounded] 短消息要被发送到的地址。
* 群发短消息的最大数量为 254。 SenderName xsd:string 指示短消息发送者的名称,即作为消息 发起者显示在用户终端上的名称。
* Charging Common:ChargingInformation 可选参数。应用于本消息的计费。 Message Xsd:string
* 在短消息中发送的文本。 ReceiptRequest Common:SimpleReference 指示是否需要网络侧返回递交状态报
* 9.5.1.1.2 输出:sendSmsResponse 参数 类型 描述 RequestIdentifier Xsd:string
* 标识一个特定的短消息发送请求。
*/
/**
* sendMessage(String desTermID, String srcTermID, String msgContent, String feeValue)
*/
public String sendMessage(MT mt) throws Exception {
if(mt == null)
return "error mt";
SendSmsServiceLocator serviceLocator = new SendSmsServiceLocator();
serviceLocator.setSendSmsEndpointAddress(Constant.SendSms_address);//设置SOAP目标地址
// serviceLocator.setSendSmsEndpointAddress("http://localhost:8080/unSoap/webservice");
// serviceLocator.setSendSmsEndpointAddress("http://211.94.156.189:8080/sdun/webservice");
SendSmsService service = (SendSmsService) serviceLocator;
SendSmsBindingStub client = (SendSmsBindingStub) service.getSendSms();
SimpleDateFormat sf = new SimpleDateFormat("MMddhhmmss");
/**设置SOAP包头,包头定义公共验证信息*/
// HeaderSet.set//包头共有11个参数,使用开发包设置只能设置7个参数,还有4个头参数一般不用设置:SAN,transactionId,transEnd,linkId
HeaderSetExtend.set_T_down_header_spId(UN.getInstance().getCorpID());
HeaderSetExtend.set_T_down_header_spPassword(UN.getInstance().getIcpPasswd());
HeaderSetExtend.set_T_down_header_timeStamp(sf.format(new Date()));//时间戳月日时分秒
HeaderSetExtend.set_T_down_header_serviceId(mt.getServiceCode());//业务ID
HeaderSetExtend.set_T_down_header_OA(mt.getSrcTermID());//群发时可以为空,单发时不能为空,本意是填发端手机号码
HeaderSetExtend.set_T_down_header_FA(mt.getDestTermID());//付费地址。可选
HeaderSetExtend.set_T_down_header_groupMessaging(true);//True:群发 False:非群发 缺省为False
//new extends
HeaderSetExtend.set_T_down_header_SPNumber(UN.getInstance().getSpNumber());//SPNumber业务接入码。可选。上行时用到,下行时不填UN.getInstance().getSpNumber()
HeaderSetExtend.set_T_down_header_sessionId(null);//SessionID 业务流水号,用于组合业务。可选
HeaderSetExtend.set_T_down_header_sessionEnd(null);//SessionEnd交易结束标识,用于组合业务。可选
if(mt.getLinkID()!= null && !"".equalsIgnoreCase(mt.getLinkID()))
HeaderSetExtend.set_T_down_header_linkId(mt.getLinkID());//事务关联ID,用于点播业务的事务关联,由平台产生。格式如下:MMDDHHMMSS+10位随机序列号;为空(二进制0)表 示无效。可选
HeaderSetExtend.setDownSoapHeader(client);
/**设置SOAP包体,包体定义计费信息和短信内容*/
//desAdress
URI[] uri = new URI[1];
uri[0] = new URI("tel:"+mt.getDestTermID());
//计费信息ChargingInformation
ChargingInformation ci = new ChargingInformation();
ci.setAmount(new BigDecimal(Integer.parseInt(mt.getFeeCode())));//计费总计(可选)
ci.setCode(mt.getServiceCode());//计费代码,指明一个计费合约
ci.setCurrency(mt.getFeeCode());//ISO 4217 [12] 中定义的流通检验标志(可选)
ci.setDescription("Description");//计费信息文字描述
//SimpleReference
SimpleReference sr = new SimpleReference();
sr.setCorrelator(Util.getOrderID());//关联标识xsd:String
try {
sr.setEndpoint(new URI(Constant.ReciveSms_address));//端口xsd:anyURI
} catch (Exception e) {
sr.setEndpoint(new URI("tel:13333333333"));//端口xsd:anyURI
}
sr.setInterfaceName("huawei");//接口名称xsd:String
mt.setMsgID(sr.getCorrelator());//right!
// mtlog.info("mt.getMsgID() = " + mt.getMsgID());
this.writeLog(mt);
this.addtoFlowWindow(mt.getMsgID(), mt);//加入到滑动窗口
String requestIdentifier = client.sendSms(uri, mt.getSrcTermID(), ci, mt.getMsgContent(), sr);
//add new
// DeliveryInformation[] di = client.getSmsDeliveryStatus(requestIdentifier);
// requestIdentifier = "";
// for(int i=0;i<di.length;i++){
// DeliveryStatus ds = di[i].getDeliveryStatus();
// requestIdentifier = requestIdentifier + " " + ds.toString();
// }
// org.apache.axis.monitor.SOAPMonitorConstants constants = new org.apache.axis.monitor.SOAPMonitorConstants();
//// constants.
// org.apache.axis.monitor.SOAPMonitorService ser = new org.apache.axis.monitor.SOAPMonitorService();
//// ser.
return requestIdentifier;
}
public static String sendMessage() throws Exception {
SendSmsServiceLocator serviceLocator = new SendSmsServiceLocator();
serviceLocator.setSendSmsEndpointAddress(Constant.SendSms_address);//设置SOAP目标地址
// serviceLocator.setSendSmsEndpointAddress("http://localhost:8080/unSoap/webservice");
SendSmsService service = (SendSmsService) serviceLocator;
SendSmsBindingStub client = (SendSmsBindingStub) service.getSendSms();
SimpleDateFormat sf = new SimpleDateFormat("MMddhhmmss");
//设置SOAP包头,包头定义公共验证信息
HeaderSet.set_T_down_header_spId("88888");
HeaderSet.set_T_down_header_spPassword("88888");
HeaderSet.set_T_down_header_timeStamp(sf.format(new Date()));//时间戳月日时分秒
HeaderSet.set_T_down_header_serviceId("0100100300");//业务ID
HeaderSet.set_T_down_header_OA("13010205190");//群发时可以为空,单发时不能为空,本意是填发端手机号码
HeaderSet.set_T_down_header_FA("13010205190");
HeaderSet.set_T_down_header_multicastMessaging(false);
// HeaderSet.set
HeaderSet.setDownSoapHeader(client);
//desAdress
URI[] uri = new URI[1];
uri[0] = new URI("tel:13010205190");
//计费信息ChargingInformation
ChargingInformation ci = new ChargingInformation();
ci.setAmount(new BigDecimal(100));//计费总计(可选)
ci.setCode("Test");//计费代码,指明一个计费合约
ci.setCurrency("");//ISO 4217 [12] 中定义的流通检验标志(可选)
ci.setDescription("Description");//计费信息文字描述
SimpleReference sr = new SimpleReference();
sr.setCorrelator(sf.format(new Date()));//关联标识xsd:String
sr.setEndpoint(new URI("tel:13333333333"));//端口xsd:anyURI
sr.setInterfaceName("huawei");//接口名称xsd:String
String ret = client.sendSms(uri, "9308", ci, "hello", sr);
//add new
// Thread.sleep(1000);
DeliveryInformation[] di = client.getSmsDeliveryStatus(ret);
ret = "";
for(int i=0;i<di.length;i++){
DeliveryStatus ds = di[i].getDeliveryStatus();
ret = ret + " " + ds.toString();
}
return ret;
}
protected void addtoFlowWindow(String seqNum,MT mt){
mtlog.info("cmppsubmit seqNum = " + seqNum);
Vector v = new Vector();
v.addElement(mt);
v.addElement("" + System.currentTimeMillis());
flowWindow.put(seqNum, v);
mtlog.info("--- success to send data & add to flowWindow ---"+flowWindow.size());
}
public void writeLog(MT mt){
mtlog.info("DestTermID = " + mt.getDestTermID());
mtlog.info("FeeTermID = " + mt.getFeeTermID());
mtlog.info("SrcTermID = " + mt.getSrcTermID());
mtlog.info("FeeCode = " + mt.getFeeCode());
mtlog.info("ServiceCode = " + mt.getServiceCode());
mtlog.info("ServiceID = " + mt.getServiceID());
mtlog.info("LinkID = " + mt.getLinkID());
mtlog.info("MsgContent = " + mt.getMsgContent());
}
/**
* @param args
*/
public static void main(String[] args) {
// SMSSender sender = new SMSSender();
try {
System.out.println("return info="
+ SMSSender.sendMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -