📄 mm7sender.java
字号:
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();
}
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();
}
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();
}
break;
case 7:
break;
default:
break;
}
}
}
return res;
}
catch(Exception 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){
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(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))
res.setStatusDetail(subEle.getTextTrim());
}
}
}
return res;
}
}
}
}catch(JDOMException jdome)
{
MM7RSErrorRes error = new MM7RSErrorRes();
System.err.print(jdome);
error.setStatusCode(-109);
error.setStatusText("XML解析错误!原因:"+jdome);
SevereBuffer.append("[Message_Type=MM7RSErrorRes]");
SevereBuffer.append("[Comments={-109;"+error.getStatusText()+"}]");
return error;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -