卓望MISC1.6 的provision --无web服务器

根据那个图片上传处理服务器的思路,小改了一个处理器.尚未测试.
使用dom4j解析收到的XML 并返回处理结果

需要JDK6


/**
* provision
* @author rikugun
*/
public class CMPP3Provision {

private static HttpServer hs;
private static Logger logger = Logger.getLogger(CMPP3Provision.class.getName());

static {
try {
logger.debug("初始化Http Server");
hs = HttpServer.create(new InetSocketAddress(1234), 0); //设置HttpServer的端口为1234
hs.createContext("/provision", new ProvisionHandler());
} catch (IOException ex) {
logger.warn("初始化Provision出错!", ex);
}

}

public CMPP3Provision() {
}

public void Start() {
hs.start();
}

public void Stop() {
hs.stop(1);
}
}


处理模块

/**
* provision处理模块
* @author rikugun
*/
public class ProvisionHandler implements HttpHandler {

private static Logger logger = Logger.getLogger(ProvisionHandler.class.getName());
private static Document dom, repDom;
private static SAXReader saxReader = new SAXReader();

@Override
public void handle(HttpExchange t) throws IOException {
logger.debug("获取同步信息,来自:"+t.getRemoteAddress().toString());
logger.debug(t.getRequestHeaders().entrySet().toString());
OutputStream os = t.getResponseBody();
try {
dom = saxReader.read(t.getRequestBody());
repDom = doSync(dom);
t.sendResponseHeaders(200, repDom.asXML().length());
os.write(repDom.asXML().getBytes());
} catch (DocumentException ex) {
logger.warn("解析XML错误", ex);

}

os.close();
}

private Document doSync(Document dom) {
logger.debug("--------获取到的XML--------");
logger.debug(dom.asXML());
logger.debug("--------获取到的XML--------");

Element header = (Element) dom.getRootElement().element("Header");
//transactionID
String transactionID = header.elementText("TransactionID");
Element body = (Element) dom.getRootElement().element("Body");
Element syncOrderRelationReq = (Element) body.element("SyncOrderRelationReq");
//UserId
List<Element> msidn = body.selectNodes("ActionID");
List<Element> user = body.selectNodes("//FeeUser_ID");

//动作类型
String actionId = syncOrderRelationReq.elementText("ActionID");

//动作原因
String actionReasonId = syncOrderRelationReq.elementText("ActionReasonID");

//业务ID
String serviceId = syncOrderRelationReq.elementText("SPServiceID");

//附加参数
String featureStr = syncOrderRelationReq.elementText("FeatureStr");

//TODO 更新数据库中的用户订购信息

SyncOrderRelationResp ret = new SyncOrderRelationResp(transactionID,"0");
logger.debug("--------返回的XML--------");
logger.debug(ret.getDocument().asXML());
logger.debug("--------返回的XML--------");
//返回执行成功的XML
return ret.getDocument();
}
}



辅助类

/**
* 同步信息响应
* @author rikugun
*/
public class SyncOrderRelationResp {
//原始XML
private static String raw = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<SOAP-ENV:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
" <SOAP-ENV:Header>\n" +
"<TransactionID xmlns=\"http://www.monternet.com/dsmp/schemas/\">00240301659556</TransactionID>\n" +
"</SOAP-ENV:Header>\n" +
"<SOAP-ENV:Body>\n" +
"<SyncOrderRelationResp xmlns:=\"http://www.monternet.com/dsmp/schemas/\">\n" +
"<Version xsi:type=\"xsd:string\">1.5.0</Version>\n" +
"<MsgType xsi:type=\"xsd:string\">SyncOrderRelationResp</MsgType>\n" +
"<hRet xsi:type=\"xsd:integer\">1</hRet>\n" +
"</SyncOrderRelationResp>\n" +
"</SOAP-ENV:Body>\n" +
"</SOAP-ENV:Envelope>";
private static Document dom;
private static Element transaction, hRet;

static {
try {
dom = DocumentHelper.parseText(raw);
} catch (DocumentException ex) {
Logger.getLogger(SyncOrderRelationResp.class.getName()).warn("生成响应XML出错!", ex);
}
transaction = dom.getRootElement().element("Header").element("TransactionID");
hRet = dom.getRootElement().element("Header").element("hRet");
}

/**
* 定制消息反馈
* @param transactionID 事务ID
*/
public SyncOrderRelationResp(String transactionID) {
transaction.setText(transactionID);
}

/**
* 定制消息反馈
* @param transactionID 事务ID
* @param ret 返回值
*/
public SyncOrderRelationResp(String transactionID, String ret) {
transaction.setText(transactionID);
hRet.setText(ret);
}

/**
* 获取生成的结果Document
* @return
*/
public Document getDocument() {
return dom;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值