好多朋友问我HTTP +XML报文接口怎样做,客户端怎样写,服务端怎样写。
我想应该是这样的:
服务端:
InputStream in = request.getInputStream();
SAXReader saxReader = new SAXReader();
InputStreamReader strInStream = new InputStreamReader(in, "UTF-8");
try {
Document document = saxReader.read(strInStream);
Element root = document.getRootElement();
Iterator lv = root.elementIterator("FILE");
Element el = null;
while (lv.hasNext()) {
el = (Element) lv.next();
System.out.println(el.elementText("FILE_STRING"));
System.out.println(el.elementText("FILE_NAME"));
//逻辑处理
}
//String file = document.selectSingleNode("/FILE/FILE_STRING").getText();
//System.out.println(file);
} catch (DocumentException e) {
e.printStackTrace();
}
//返回报文
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("RET_INFO");
addElement(rootElement,"RESULT", "操作成功");
DataOutputStream out = new DataOutputStream(response.getOutputStream());
XMLWriter writer = new XMLWriter(out);
writer.write(document);
writer.close();
out.flush();
客户端:
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("FILELIST");
Element planElement = rootElement.addElement("FILE");
addElement(planElement,"FILE_STRING", r1);
addElement(planElement,"FILE_NAME", r2);
Element planElement2 = rootElement.addElement("FILE");
addElement(planElement2,"FILE_STRING", "MMMMMMMMM");
addElement(planElement2,"FILE_NAME", "NNNNNNNNNN");
HttpURLConnection http;
try {
URL urls = new URL("http://127.0.0.1:800/aa/servlet/Test");
http = (HttpURLConnection) urls.openConnection();
http.setDoOutput(true);
http.setDoInput(true);
http.setRequestMethod("POST");
DataOutputStream out = new DataOutputStream(http.getOutputStream());
XMLWriter writer = new XMLWriter(out);
writer.write(document);
writer.close();
out.flush();
//System.out.println( in(http.getInputStream()));
//接口返回的报文
Document rt = in_doc(http.getInputStream());
System.out.println(rt.selectSingleNode("/RET_INFO/RESULT").getText());
} catch (Exception ex) {
ex.printStackTrace();
}