Servlet 接受解析HTTP请求XML数据,返回XML
项目需要Servlet接受http提交过来的XML解析后,返回数据.
OutputStream output = null;
HttpURLConnection conn = null;
Document document = null;
SAXReader reader = new SAXReader();
URL _url;
if (StringUtil.isNotEmpty(xml)) {
try {
_url = new URL(url);
conn = (HttpURLConnection) _url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
output = conn.getOutputStream();
output.write(xml.getBytes());
output.flush();
document = reader.read(new InputStreamReader(conn.getInputStream(), "GBK"));
document.setXMLEncoding("GBK");
return document.asXML();
} catch (MalformedURLException e1) {
//log.error(e1.toString());
e1.printStackTrace();
} catch (IOException e2) {
//log.error(e2.toString());
e2.printStackTrace();
} catch (DocumentException e3) {
//log.error(e3.toString());
e3.printStackTrace();
} finally {
try {
if (output != null) {
output.close();
}
if (conn != null) {
conn.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "";
服务器的Servlet使用DOM4J调用解析.原先的一个项目这样调用是可以的.
SAXReader reader = new SAXReader();
document = reader.read(request.getInputStream());
不知道什么原因报错了..
org.dom4j.DocumentException: Error on line -1 of document : Premature end of file. Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at com.wasu.itv.web.servlet.ObjectServlet.execute(ObjectServlet.java:75)
at com.wasu.itv.web.servlet.ObjectServlet.doPost(ObjectServlet.java:66)
at