package com.clinet.task;
import java.util.List;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import com.clinet.UCPClient;
import com.clinet.UCPClinetFactory;
import com.clinet.base.Constants;
import com.clinet.bean.ReveiceMessage;
import com.clinet.service.ReveiceMessageService;
public class ReveiceMessageTask {
private ReveiceMessageService reveiceMessageService;
private static final String USER_NAME = "12345UserTest";
private static final String PASSWORD = "U1s2e3r4T5est";
private static final Logger logger = Logger
.getLogger(ReveiceMessageTask.class);
/**
* @param reveiceMessageService the reveiceMessageService to set
*/
public void setReveiceMessageService(ReveiceMessageService reveiceMessageService) {
this.reveiceMessageService = reveiceMessageService;
}
public synchronized void execute() {
logger.info("开始执行程序.");
UCPClinetFactory factory = new UCPClinetFactory();
UCPClient client = factory.getUCPClient();
receiveSMS(client);
}
private void receiveSMS(UCPClient client) {
try {
String sessionId = client.login(USER_NAME, PASSWORD);
byte[] bytes = client.receiveSMS(sessionId);
if (bytes != null) {
String message = new String(bytes, "UTF-8");
logger.info("接收到的短信 [" + message + "]");
message = filterText(message);
Document document = DocumentHelper.parseText(message);
List<Element> elements = document.getRootElement().elements(
Constants.ELEMENT_NAME_SMSMSGRECEIVE);
for (Element element : elements) {
ReveiceMessage msg = new ReveiceMessage();
msg.setMsgId(element.elementText(Constants.ELEMENT_NAME_MSGID));
msg.setDesttermId(element.elementText(Constants.ELEMENT_NAME_DESTTERMID));
msg.setSrctermId(element.elementText(Constants.ELEMENT_NAME_SRCTERMID));
msg.setMsgContent(element.elementText(Constants.ELEMENT_NAME_MSGCONTENT));
msg.setRecvTime(element.elementText(Constants.ELEMENT_NAME_RECVTIME));
msg.setReveiceId(USER_NAME);
reveiceMessageService.insertReveiceMessage(msg);
}
}
logger.info("结束执行.");
} catch (Exception e) {
e.printStackTrace();
logger.error("", e);
}
}
char [] chars = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5};
private String filterText(String message) {
for (int i = 0; i < chars.length; i++) {
message = message.replaceAll(String.valueOf(chars[i]), "");
}
return message;
}
}
抛错:
Nested exception:
org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x5) was found
in the element content of the document.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAX
ParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalErro
r(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(
XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(X
MLScanner.java:1427)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2895)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(X
MLDocumentScannerImpl.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next
(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
ML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
ML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.
java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab
stractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p
arse(SAXParserImpl.java:522)