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

📄 mmsdobussi.java

📁 彩信网关程序,SP程序,包含移动彩信代码和电信彩信代码!供学习之用
💻 JAVA
字号:
package com.hxyh.sanny.mms.telecom.main;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;

import org.apache.axiom.attachments.Attachments;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.databinding.types.URI;

import com.hxyh.sanny.mms.telecom.config.Config_XML;
import com.hxyh.sanny.mms.telecom.config.GateParam;
import com.hxyh.sanny.mms.telecom.service.PolicyException;
import com.hxyh.sanny.mms.telecom.service.SendMessageServiceStub;
import com.hxyh.sanny.mms.telecom.service.ServiceException;
import com.hxyh.sanny.mms.telecom.service.SendMessageServiceStub.MessagePriority;
import com.hxyh.sanny.mms.telecom.service.SendMessageServiceStub.SendMessage;
import com.hxyh.sanny.mms.telecom.service.SendMessageServiceStub.SendMessageE;
import com.hxyh.sanny.mms.telecom.service.SendMessageServiceStub.SendMessageResponseE;
import com.hxyh.sanny.mms.telecom.service.SendMessageServiceStub.SimpleReference;
import com.hxyh.sanny.mms.telecom.soap.HeaderSetter;
import com.hxyh.sanny.mms.telecom.tool.DBConnectionPool;

public class MMSDobussi {
	GateParam m_oParam = null;

	Connection m_oCon = null;

	Statement m_oRsStat = null;

	Statement m_oCmdStat = null;

	String sql = "";

	ResultSet rs = null;

	String m_sDestTerminalID = null;// 用户号码

	String m_sSrcTerminalID = null; // 源号码

	String m_sMMSContent = null; // 彩信内容

	String m_sServiceCode = null;// 业务代码

	String m_sLinkID = null;// LINDID

	String m_sTransactionId = null;// transactionId

	public boolean returnFlag = true;
	
	private Config_XML m_oXmlParser = new Config_XML();

	public void initParam() {
		// 获取配置文件
		m_oParam = new GateParam();
		// 数据库连接
		DBConnectionPool.initDriver(m_oParam.m_sDBDrv);
		DBConnectionPool.setUrl(m_oParam.m_sDBURL);
		DBConnectionPool.setUser(m_oParam.m_sDBUser);
		DBConnectionPool.setPassword(m_oParam.m_sDBPass);

		m_oCon = DBConnectionPool.getConnection();
		try {
			m_oRsStat = m_oCon.createStatement();
			m_oCmdStat = m_oCon.createStatement();
			System.out.println("INFO:连接数据库成功!:" + m_oParam.m_sDBURL + "["
					+ m_oParam.m_sDBUser + "]" + m_oParam.m_sDBPass);
			System.out.println("INFO:线程启动!");
			for (;;) {
				sql = "select * from HXYH_MMS_MT where YH_STATUS = 'wait'";
				rs = m_oRsStat.executeQuery(sql);
				while (rs.next()) {
					// 有彩信内容下发
					m_sDestTerminalID = rs.getString("DestTerminalID");
					m_sSrcTerminalID = rs.getString("SrcTerminalID");
					m_sMMSContent = rs.getString("MMSContent");
					m_sServiceCode = rs.getString("ServiceCode");
					m_sLinkID = rs.getString("LinkID");
					m_sTransactionId = rs.getString("TransactionId");
					// 发送
					returnFlag = SendMMSContent(m_sDestTerminalID,
							m_sSrcTerminalID, m_sMMSContent, m_sServiceCode,
							m_sLinkID, m_sTransactionId, m_oParam);
				}
				Thread.sleep(3000);
			}
		} catch (Exception e) {
			System.exit(1);
			e.printStackTrace();
		}
	}

	// 发送彩信
	public boolean SendMMSContent(String m_sDestTerminalID,
			String m_sSrcTerminalID, String m_sMMSContent,
			String m_sServiceCode, String m_sLinkID, String m_sTransactionId,
			GateParam m_oParam) {
		boolean returntype = true;
		try {
			m_oXmlParser.set(m_sMMSContent);
			/*
			 * MMS接口规范中定义的sendMessage接口参数:
			 * 
			 * DestinationAddress xsd:anyURI [0..unbounded] SenderAddress
			 * xsd:anyURI Subject xsd:String Priority MessagePriority Charging
			 * Common:ChargingInformation ReceiptRequest Common:SimpleReference
			 */

			/** ***begin - sendMessage接口参数设置**** */
			SendMessage param = new SendMessage();
			

			// DestinationAddress, 目的地址(群发的情况下, DestinationAddress为URI数组)
//			URI[] addr = new URI[1];
//			addr[0] = new URI(m_sDestTerminalID);
//			param.setAddresses(addr);
			
			String[] s_ToMdn = m_sDestTerminalID.split(";");
			int n_ToMdnSize = s_ToMdn.length;
			URI[] addr = new URI[n_ToMdnSize];
			for(int nn = 0;nn<n_ToMdnSize;nn++){
				addr[nn] = new URI(s_ToMdn[nn]);
			}
			param.setAddresses(addr);
			
			// SenderAddress
			param.setSenderAddress(m_sSrcTerminalID);
			// Subject
			param.setSubject("MMSTest");
			// Priority
			param.setPriority(MessagePriority.Default);
			// Charging(可选)
			param.setCharging(null);
			// ReceiptRequest, 为null表示SP不需要状态报告; 非null表示SP需要状态报告
			SimpleReference simpleRef = new SimpleReference();
			simpleRef.setEndpoint(new URI(m_oParam.m_sSPURL));// 设置SPURL地址
			simpleRef.setCorrelator("123456");
			simpleRef.setInterfaceName("test");
			// param.setReceiptRequest(simpleRef); //ReceiptRequest不为Null
			param.setReceiptRequest(null); // ReceiptRequest为Null
			
			/**
			// 设置彩信附件, 从磁盘读取图片文件
			File f = new File("D:\\1.jpg");
			Attachments attachments = new Attachments();
			FileDataSource ds = new FileDataSource(f);
			DataHandler dh = new DataHandler(ds);
			attachments.addDataHandler("12345678", dh);
			*/
			/** ***end - sendMessage接口参数设置**** */
			// ISAG的sendMessage开放接口URI
			String sendMessageURI = m_oParam.m_sMMSUrl;
			// 创建客户端Stub类的对象
			SendMessageServiceStub sendMessageStub = new SendMessageServiceStub(
					sendMessageURI);
			ServiceClient client = sendMessageStub._getServiceClient();
			// 【设置SOAPHeader】
			HeaderSetter ob_HeaderSetter = new HeaderSetter();
			ob_HeaderSetter.setLinkID(m_sLinkID);
			ob_HeaderSetter.setProductId(m_sServiceCode);
			ob_HeaderSetter.setSpId(m_oParam.m_sGTUser);
			ob_HeaderSetter.setSpPassword(m_oParam.m_sGTPass);
			ob_HeaderSetter.setTransactionId(m_sTransactionId);
			// HeaderSetter.setAOMTSoapHeader(client);
			ob_HeaderSetter.setAOMTSoapHeader(client);

			// 【设置请求消息】
			SendMessageE reqMessage = new SendMessageE();
			reqMessage.setSendMessage(param);

//			SendMessageResponseE rspMessage = sendMessageStub.sendMessage(
//					reqMessage, attachments);
			SendMessageResponseE rspMessage = sendMessageStub.sendMessage(
					reqMessage, MakeMMS());
			System.out.println(rspMessage.getSendMessageResponse().getResult());
		} catch (PolicyException e) {
			returntype = false;
			// ISAG抛出PolicyException
			String msgID = e.getFaultMessage().getPolicyException()
					.getMessageId();
			String text = e.getFaultMessage().getPolicyException().getText();
			String[] variables = e.getFaultMessage().getPolicyException()
					.getVariables();
			if (variables != null && variables.length > 0)
				text = text + " : " + variables[0];
			System.out.println("PolicyException:\n" + msgID + " : " + text);
			e.printStackTrace();
		} catch (ServiceException e) {
			returntype = false;
			// ISAG抛出ServiceException
			String msgID = e.getFaultMessage().getServiceException()
					.getMessageId();
			String text = e.getFaultMessage().getServiceException().getText();
			String[] variables = e.getFaultMessage().getServiceException()
					.getVariables();
			if (variables != null && variables.length > 0)
				text = text + " : " + variables[0];
			System.out.println("ServiceException:\n" + msgID + " : " + text);
			e.printStackTrace();
		} catch (Exception e) {
			returntype = false;
			e.printStackTrace();
		}
		return returntype;
	}
	
	//设置彩信附件
	public Attachments MakeMMS(){
		//String temp = new String("<?xml version=\"1.0\" encoding=\"gbk\"?><hxyhmms><subject><value>[华信怡和 动画彩图]</value></subject><item1><type>TXT</type><option></option><value>缤纷的霓虹照耀着寒夜的街景,一片火树银花夺目而辉煌,映得欧式宽阔的庭院光亮如白昼。美酒佳肴、俊男美女、舞影婆娑、珠光美饰……夜风吹过,湖水在火树银花的霓虹下波光鳞鳞。如闪电划过长空……一辆宝石蓝加迪;威龙跑车刹时倒映在湖水中,也闯进了众人的视线。车门打开,由车上下来的男人气宇轩昂,英气逼人。他有着一张令人屏吸的俊逸面容,立体而骨感的五。浓黑斜飞的剑眉,张显着他的凛然傲气。一双魅惑人心的大眼睛,冰冷、深邃中透露着精锐与干练。高而直挺的俊鼻,更添几分王者风范。然而,最具魅力的却是他性感的薄唇,虽薄却凌角分明,轻轻抿起,总是露出一抹狂妄而自信的微笑,这几乎成了他掳获人心无往不利的武器。他的出现就像黑中唯一的发光体般璀璨夺目,紧紧牵引着所有的注视,他每一个举手投足、一颦一笑都是如此地牵动人心。任昊,无疑是女人眼里的“绩优股”,他在媒体上的爆光率远远超过当下红得发紫的明星,哪怕是娱乐版,头条的位置总是被他一人独霸,他****倜傥、单身且多金,个性却是极其冷酷无情的,浑身散发着冰冷气息,在商场上呼风唤雨的任昊,亿万身价的他对于女人来说,绝对是飞蛾扑火、至命的诱惑……任昊一般很少出现在这里种纯娱乐性的私人派队上,哪怕是猎艳,他也不会选择来这种地方,他通常所用的猎艳方式无非就那么几种,例如,砸钱给娱乐公司,以力捧新人的为由包养刚出道的小明星……再者,就是在那些个自投罗网的大家闺秀中,挑上几个看得上眼顺心顺意的陪养一下感情。当然,偶遇的一夜欢爱他也是不排斥的。顾桃怡一出现在宴会上,立时引起不少惊艳的目光,奇怪的是,她的美貌虽然是众所共认的,却没有人请她跳舞。这样的结果让顾桃怡十分的气愤,好好的一个圣旦夜就这样被浪费了,过了这个圣旦她就十八岁整了,再也不是小朋友了!今天开始她就成年了!!!顾桃怡万岁!!!!!!!!!!!!!!!!一想到这里,小桃怡就异常的兴奋,因为变成大人对于她来说很重要,这样她就可以和其他的大人一样,随心所欲,做自己喜欢的事啦。哇噻!真是太棒了!然而,按照现在的情形来看,她好像兴奋的太早了耶!小桃怡苦着一张小脸,很不高兴的样子。明明已经长大了,为什么那些帅哥还不来邀请她跳舞呢?</value></item1><item2><type>IMG</type><option></option><value>D:\\1.gif</value></item2><item3><type>TXT</type><option></option><value>蝴蝶精灵</value></item3></hxyhmms>");
		//m_oXmlParser.set(temp);
		Attachments attachments = new Attachments();
		for (int i = 0; i < 30; i++) {
			if (m_oXmlParser.readAttribute("hxyhmms", "item" + i) == null) {
				break;
			} else {
				if (m_oXmlParser.readAttribute("item" + i, "type")
						.toUpperCase().equals("TXT")) {
					String substr = m_oXmlParser.readAttribute("item" + i, "value");
					DataHandler subdh = new DataHandler(substr,"text/plain");
					attachments.addDataHandler(i+".txt",subdh);
				}
				else if (m_oXmlParser.readAttribute("item" + i, "type")
						.toUpperCase().equals("IMG")) {
					String sImgF = m_oXmlParser.readAttribute("item" + i,"value");
					File f = new File(sImgF);
					FileDataSource ds = new FileDataSource(f);
					DataHandler dh = new DataHandler(ds);
					if (sImgF.toLowerCase().indexOf("gif") > 0) {
						attachments.addDataHandler(i + ".gif", dh);
					}
					else if ((sImgF.toLowerCase().indexOf("jpg") > 0)
							|| (sImgF.toLowerCase().indexOf("jpeg") > 0)) {
						attachments.addDataHandler(i + ".jpg", dh);
					}
				}
				else if (m_oXmlParser.readAttribute("item" + i, "type")
						.toUpperCase().equals("RING")) {
					String sRingF = m_oXmlParser.readAttribute("item" + i,
					"value");
					File f = new File(sRingF);
					FileDataSource ds = new FileDataSource(f);
					DataHandler dh = new DataHandler(ds);
					if (sRingF.toLowerCase().indexOf("mid") > 0) {
						attachments.addDataHandler(i + ".mid", dh);
					}
					else if ((sRingF.toLowerCase().indexOf("amr") > 0)){
						attachments.addDataHandler(i + ".amr", dh);
					}
				}
				else if (m_oXmlParser.readAttribute("item" + i, "type")
						.toUpperCase().equals("SMIL")) {
					String smil = m_oXmlParser.readAttribute("item" + i,
					"value");
					File f = new File(smil);
					FileDataSource ds = new FileDataSource(f);
					DataHandler dh = new DataHandler(ds);
					attachments.addDataHandler(i + ".smil", dh);
				}
			}
		}
		return attachments;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -