⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smssender.java

📁 中国联通短信通信协议
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
							}
							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 + -