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

📄 mm7sender.java

📁 彩信发送源代码,实现mm7接口
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
//				if (log.isDebugEnabled())
//					log.debug("内容转化为字节流的结果:" + sendBaos);

				String time = "[" + simple.format(new Date(System.currentTimeMillis())) + "]";
				if (sendBaos != null) {
					res = SendandReceiveMessage(sendBaos);
				}
				else {
					MM7RSErrorRes ErrorRes = new MM7RSErrorRes();
					ErrorRes.setStatusCode(-104);
					ErrorRes.setStatusText("Socket不通!");
					SevereBuffer.append("[Message_Type=MM7RSErrorRes]");
					SevereBuffer.append("[Comments={" + ErrorRes.getStatusCode());
					SevereBuffer.append(";" + ErrorRes.getStatusText() + "}]");
					return ErrorRes;
				}

				FinerBuffer.append(InfoBuffer);
				InfoBuffer.append(env);
				SevereBuffer.insert(0, "\r\n\r\n" + time + "[1]");
				InfoBuffer.insert(0, "\r\n\r\n" + time + "[3]");
				FinerBuffer.insert(0, "\r\n\r\n" + time + "[6]");

				Severebaos.write(SevereBuffer.toString().getBytes());
				Infobaos.write(SevereBuffer.toString().getBytes());
				Infobaos.write(InfoBuffer.toString().getBytes());
				Finerbaos.write(SevereBuffer.toString().getBytes());
				Finerbaos.write(InfoBuffer.toString().getBytes());
				Finerbaos.write(FinerBuffer.toString().getBytes());
				Finerbaos.write(bcontent);

				/** ********** */
				InfoBuffer = new StringBuffer();
				FinerBuffer = new StringBuffer();
				time = "[" + simple.format(new Date(System.currentTimeMillis())) + "]";
				InfoBuffer.append("\r\n\r\n" + time + "[3]");
				FinerBuffer.append("\r\n\r\n" + time + "[6]");
				InfoBuffer.append("[TransactionID=" + res.getTransactionID() + "]");
				FinerBuffer.append("[TransactionID=" + res.getTransactionID() + "]");
				if (res instanceof MM7SubmitRes) {
					InfoBuffer.append("[Message_Type=MM7SubmitRes]");
					FinerBuffer.append("[Message_Type=MM7SubmitRes]");
				}
				else if (res instanceof MM7CancelRes) {
					InfoBuffer.append("[Message_Type=MM7CancelRes]");
					FinerBuffer.append("[Message_Type=MM7CancelRes]");
				}
				else if (res instanceof MM7ReplaceRes) {
					InfoBuffer.append("[Message_Type=MM7ReplaceRes]");
					FinerBuffer.append("[Message_Type=MM7ReplaceRes]");
				}
				else if (res instanceof MM7RSErrorRes) {
					InfoBuffer.append("[Message_Type=MM7RSErrorRes]");
					FinerBuffer.append("[Message_Type=MM7RSErrorRes]");
				}
				InfoBuffer.append("[Comments={" + res.getStatusCode() + ";" + res.getStatusText() + "}]\r\n");
				FinerBuffer.append("[Comments={" + res.getStatusCode() + ";" + res.getStatusText() + "}]\r\n");
				int envbeg = baos.toString().indexOf(MMConstants.BEGINXMLFLAG);
				int envend = baos.toString().indexOf("</env:Envelope>");
				if (envbeg > 0 && envend > 0)
					env = baos.toString().substring(envbeg);
				InfoBuffer.append(env);
				FinerBuffer.append(env);

				Infobaos.write(InfoBuffer.toString().getBytes());
				Finerbaos.write(InfoBuffer.toString().getBytes());
				Finerbaos.write(FinerBuffer.toString().getBytes());
				/** ********** */

				int LogLevel = mm7Config.getLogLevel();
				if (LogLevel > 0) {
					String LogPath = mm7Config.getLogPath();
					int LogNum = mm7Config.getLogNum();
					int LogInterval = mm7Config.getLogInterval();
					int LogSize = mm7Config.getLogSize();
					// long Interval = System.currentTimeMillis() - LogTimeBZ;
					String sTimeNow = sdf.format(new Date(System.currentTimeMillis()));
					long timeNow, timeFile = 0;
					timeNow = sdf.parse(sTimeNow).getTime();
					if (logFileName.length() > 0) {
						File logFile = new File(logFileName);
						int index1 = logFileName.indexOf(mm7Config.getMmscId() + "_");
						int index11 = index1 + mm7Config.getMmscId().length() + 1;
						int index2 = logFileName.indexOf(".", index11);
						String sTimeFile = logFileName.substring(index1 + mm7Config.getMmscId().length() + 1, index2);
						timeFile = sdf.parse(sTimeFile).getTime();

						if (timeNow - timeFile > (long) LogInterval * 60 * 1000) {
							N = 1;
							this.deleteFile(LogPath, LogNum, mm7Config.getMmscId());
							logFileName = LogPath + "/" + mm7Config.getMmscId() + "_" + sTimeNow + "." + df.format(N)
									+ ".log";
						}
						else {
							if (logFile.length() > LogSize * 1024) {
								if (N < LogNum)
									N++;
								else
									N = 1;
								this.deleteFile(LogPath, LogNum, mm7Config.getMmscId());
								logFileName = LogPath + "/" + mm7Config.getMmscId() + "_" + sTimeFile + "."
										+ df.format(N) + ".log";
							}
						}
					}
					else {
						N = 1;
						this.deleteFile(LogPath, LogNum, mm7Config.getMmscId());
						logFileName = LogPath + "/" + mm7Config.getMmscId() + "_" + sTimeNow + "." + df.format(N)
								+ ".log";
					}
					switch (LogLevel)
						{
						case 1:
							try {
								FileOutputStream fos = new FileOutputStream(logFileName, true);
								fos.write(Severebaos.toByteArray());
								fos.close();
								SevereBuffer = new StringBuffer();
							}
							catch (IOException ioe) {
								// ioe.printStackTrace();
								log.error(ioe);
							}
							break;
						case 2:
							break;
						case 3:
							try {
								FileOutputStream fos = new FileOutputStream(logFileName, true);
								fos.write(Infobaos.toByteArray());
								fos.close();
								Infobaos.reset();
							}
							catch (IOException ioe) {
								// ioe.printStackTrace();
								log.error(ioe);
							}
							break;
						case 4:
							break;
						case 6:
							try {
								FileOutputStream fos = new FileOutputStream(logFileName, true);
								fos.write(Finerbaos.toByteArray());
								fos.close();
								Finerbaos = new ByteArrayOutputStream();
							}
							catch (IOException ioe) {
								// ioe.printStackTrace();
								log.error(ioe);
							}
							break;
						case 7:
							break;
						default:
							break;
						}
				}
			}
			return res;
		}
		catch (Exception e) {
			log.error("发送异常:" + e);
			MM7RSErrorRes ErrorRes = new MM7RSErrorRes();
			// e.printStackTrace();
			ErrorRes.setStatusCode(-100);
			ErrorRes.setStatusText("系统错误!原因:" + e);
			return ErrorRes;
		}
	}

	private void deleteFile(String logpath, int lognum, String MMSCID) {
		File parfile = new File(logpath);
		if (parfile.isDirectory()) {
			File[] subfile = parfile.listFiles();
			List list = new ArrayList();
			for (int i = 0; i < subfile.length; i++) {
				String name = subfile[i].getName();
				if (name.indexOf(MMSCID) >= 0) {
					list.add(name);
				}
			}
			if (list.size() >= lognum) {
				int deleteLength = list.size() - lognum + 1;
				Comparator comp = Collections.reverseOrder();
				Collections.sort(list, comp);
				for (int i = list.size() - deleteLength; i < list.size(); i++) {
					String strfile = (String) list.get(i);
					File ff = new File(logpath + "/" + strfile);
					ff.delete();
				}
			}
		}
	}

	private byte[] getContent(MM7VASPReq mm7VASPReq) {
		byte[] b = null;
		SOAPEncoder encoder = new SOAPEncoder(mm7Config);
		encoder.setMessage(mm7VASPReq);
		try {
			encoder.encodeMessage();
		}
		catch (Exception e) {
			log.error("getContent():" + e);
			// System.err.println(e);
		}
		b = encoder.getMessage();
		return (b);
	}

	/** 进行BASE64编码 */
	public static String getBASE64(String value) {
		if (value == null)
			return null;
		BASE64Encoder BaseEncode = new BASE64Encoder();
		return (BaseEncode.encode(value.getBytes()));
	}

	private MM7RSRes parseXML() {
		SAXBuilder sax = new SAXBuilder();
		SevereBuffer.append("recv=" + baos.toString() + "\r\n");
		try {
			if (baos.toString() == null || baos.toString().equals("")) {
				MM7RSErrorRes errRes = new MM7RSErrorRes();
				errRes.setStatusCode(-107);
				errRes.setStatusText("错误!接收到的消息为空!");
				SevereBuffer.append("[Message_Type=MM7RSErrorRes]");
				SevereBuffer.append("[Comments={-107;错误!接收到的消息为空!}]");
				return errRes;
			}
			else {
				// System.out.println("baos="+baos.toString());
				int index = -1;
				// int xmlend = -1;
				index = baos.toString().indexOf(MMConstants.BEGINXMLFLAG);
				if (log.isDebugEnabled())
					log.debug("<?xml在返回消息中的位置为:" + index);
				if (index == -1) {
					int httpindex = -1;
					httpindex = baos.toString().indexOf("HTTP1.1");
					String strstat = "";
					if (httpindex >= 0) {
						int index11 = baos.toString().indexOf("\r\n");
						strstat = baos.toString().substring(httpindex + 7, index11);
					}
					MM7RSErrorRes err = new MM7RSErrorRes();
					err.setStatusCode(-108);
					if (!strstat.equals(""))
						err.setStatusText(strstat);
					else
						err.setStatusText("Bad Request");
					SevereBuffer.append("[Message_Type=MM7RSErrorRes]");
					SevereBuffer.append("[Comments={" + err.getStatusCode() + ";" + err.getStatusText() + "}]");
					return err;
				}
				String xmlContent = baos.toString().substring(index, baos.toString().length());
				String xmlContentTemp = "";
				byte[] byteXML = baos.toByteArray();
				int index1 = xmlContent.indexOf("encoding=\"UTF-8\"");
				if (index1 > 0) {
					xmlContentTemp = new String(byteXML, "UTF-8");
					int xmlind = xmlContentTemp.indexOf(MMConstants.BEGINXMLFLAG);
					int xmlindend = xmlContentTemp.lastIndexOf("Envelope>");
					if (xmlindend > 0) {
						xmlContentTemp = xmlContentTemp.substring(xmlind, xmlindend + 9);
						String xml = xmlContentTemp.substring(0, index1) + "encoding=\"GB2312\""
								+ xmlContentTemp.substring(index1 + "encoding=\"UTF-8\"".length());
						xmlContent = xml;
					}
				}
				SevereBuffer.append("!xmlContent=" + xmlContent + "!\r\n");
				ByteArrayInputStream in = new ByteArrayInputStream(xmlContent.getBytes());
				Document doc = sax.build(in);
				Element root = doc.getRootElement();
				Element first = (Element) root.getChildren().get(0);
				if (first.getName().equalsIgnoreCase("body")) {
					Element Message = (Element) first.getChildren().get(0);
					if (Message.getName().equals("Fault")) {
						MM7RSErrorRes errRes = new MM7RSErrorRes();
						errRes.setStatusCode(-110);
						errRes.setStatusText("Server could not fulfill the request");
						SevereBuffer.append("[Message_Type=MM7RSErrorRes]");
						SevereBuffer.append("[Comments={-110;Server could not fulfill the request}]");
						return errRes;
					}
					else {
						MM7RSErrorRes errRes = new MM7RSErrorRes();
						errRes.setStatusCode(-111);
						errRes.setStatusText("Server error");
						SevereBuffer.append("[Message_Type=MM7RSErrorRes]");
						SevereBuffer.append("[Comments={-111;Server error}]");
						return errRes;
					}
				}
				else {
					Element envBody = (Element) root.getChildren().get(1);
					Element Message = (Element) envBody.getChildren().get(0);
					Element envHeader = (Element) root.getChildren().get(0);
					Element transID = (Element) envHeader.getChildren().get(0);
					String transactionID = transID.getTextTrim();
					int size = Message.getChildren().size();
					SevereBuffer.append("\r\nMessage.getName()=" + Message.getName() + "\r\n");
					if (Message.getName().equals("SubmitRsp")) {
						MM7SubmitRes submitRes = new MM7SubmitRes();
						submitRes.setTransactionID(transactionID);
						for (int i = 0; i < size; i++) {
							Element ele = (Element) Message.getChildren().get(i);
							if (ele.getName().equals(MMConstants.STATUS)) {
								for (int j = 0; j < ele.getChildren().size(); j++) {
									Element subEle = (Element) ele.getChildren().get(j);
									if (subEle.getName().equals(MMConstants.STATUSCODE))
										submitRes.setStatusCode(Integer.parseInt(subEle.getTextTrim()));
									else if (subEle.getName().equals(MMConstants.STATUSTEXT))
										submitRes.setStatusText(subEle.getTextTrim());
									else if (subEle.getName().equals(MMConstants.STATUSDETAIL))
										submitRes.setStatusDetail(subEle.getTextTrim());
								}
							}
							else if (ele.getName().equals(MMConstants.MESSAGEID)) {
								submitRes.setMessageID(ele.getTextTrim());
							}
						}
						return submitRes;
					}
					else if (Message.getName().equals("CancelRsp")) {
						MM7CancelRes cancelRes = new MM7CancelRes();
						cancelRes.setTransactionID(transactionID);
						for (int i = 0; i < size; i++) {
							Element ele = (Element) Message.getChildren().get(i);
							if (ele.getName().equals(MMConstants.STATUS)) {
								for (int j = 0; j < ele.getChildren().size(); j++) {
									Element subEle = (Element) ele.getChildren().get(j);
									if (subEle.getName().equals(MMConstants.STATUSCODE))
										cancelRes.setStatusCode(Integer.parseInt(subEle.getTextTrim()));
									else if (subEle.getName().equals(MMConstants.STATUSTEXT))
										cancelRes.setStatusText(subEle.getTextTrim());
									else if (subEle.getName().equals(MMConstants.STATUSDETAIL))
										cancelRes.setStatusDetail(subEle.getTextTrim());
								}
							}
						}
						return cancelRes;
					}
					else if (Message.getName().equals("ReplaceRsp")) {
						MM7ReplaceRes replaceRes = new MM7ReplaceRes();
						replaceRes.setTransactionID(transactionID);
						for (int i = 0; i < size; i++) {
							Element ele = (Element) Message.getChildren().get(i);
							if (ele.getName().equals(MMConstants.STATUS)) {
								for (int j = 0; j < ele.getChildren().size(); j++) {
									Element subEle = (Element) ele.getChildren().get(j);
									if (subEle.getName().equals(MMConstants.STATUSCODE))
										replaceRes.setStatusCode(Integer.parseInt(subEle.getTextTrim()));
									else if (subEle.getName().equals(MMConstants.STATUSTEXT))
										replaceRes.setStatusText(subEle.getTextTrim());
									else if (subEle.getName().equals(MMConstants.STATUSDETAIL))
										replaceRes.setStatusDetail(subEle.getTextTrim());
								}
							}
						}
						return replaceRes;
					}
					else {
						MM7RSRes res = new MM7RSRes();
						res.setTransactionID(transactionID);
						for (int i = 0; i < size; i++) {
							Element ele = (Element) Message.getChildren().get(i);
							if (ele.getName().equals(MMConstants.STATUS)) {
								for (int j = 0; j < ele.getChildren().size(); j++) {
									Element subEle = (Element) ele.getChildren().get(j);
									if (subEle.getName().equals(MMConstants.STATUSCODE))
										res.setStatusCode(Integer.parseInt(subEle.getTextTrim()));
									else if (subEle.getName().equals(MMConstants.STATUSTEXT))
										res.setStatusText(subEle.getTextTrim());
									else if (subEle.getName().equals(MMConstants.STATUSDETAIL))

⌨️ 快捷键说明

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