1 .项目中,难免遇到两个系统平台数据的交互,此时就需要通过接口来完成了;
2.WebService 基于 HTTP 通信,它跨平台,使得易购平台能无缝衔接,将应用程序的逻辑和数据暴露,使得其他应用系统可重用这些数据;
使用xml对数据封装,使得内容和结构分离,很强的可操作性,作为纯文本可方便的穿过防火墙,它规范统一、支持多种编码、易于扩展;
组装报文:传递字符串数组
public void createXml() {
try {
String[] input = { "damon,907931506", "chris,776295345" };
String[] line = new String[2];
DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance();
DocumentBuilder build = dFact.newDocumentBuilder();
Document doc = build.newDocument();
doc.setXmlStandalone(true);
Element root = doc.createElement("root");
doc.appendChild(root);
Element memberList = doc.createElement("members");
root.appendChild(memberList);
for (int i = 0; i < input.length; i++) {
line = input[i].split(",");
Element member = doc.createElement("member");
memberList.appendChild(member);
Element name = doc.createElement("name");
name.appendChild(doc.createTextNode(line[0]));
member.appendChild(name);
Element phone = doc.createElement("qq");
phone.appendChild(doc.createTextNode(line[1]));
member.appendChild(phone);
}
TransformerFactory tFact = TransformerFactory.newInstance();
Transformer trans = tFact.newTransformer();
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
DOMSource source = new DOMSource(doc);
trans.transform(source, result);
System.out.println(writer.toString());
} catch (TransformerException ex) {
System.out.println("Error outputting document");
} catch (ParserConfigurationException ex) {
System.out.println("Error building document");
}
}
调试输出结果为:
<?xml version="1.0" encoding="UTF-8"?> <root> <members> <member> <name>damon</name> <qq>907931506</qq> </member> <member> <name>chris</name> <qq>776295345</qq> </member> </members> </root>
客户端对报文进行解析:(对普通格式的xml进行解析,字符串数组类似)
public Map readXml(String xml) {
Map map = new HashMap();
try {
Document doc = (Document) DocumentHelper.parseText(xml);
Element element = doc.getRootElement();
Iterator Elements = element.elementIterator();
while (Elements.hasNext()) {
Element user = (Element) Elements.next();
if (user.getName().equals("returnCode")) {
map.put(user.getName(), user.getStringValue());
}
Iterator iters = user.elementIterator("param");
while (iters.hasNext()) {
Element itemEle = (Element) iters.next();
String paramKey = itemEle.elementTextTrim("paramKey");
String paramValue = itemEle.elementTextTrim("paramValue");
map.put(paramKey, paramValue);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}