通过文档构建器提交帖子请求

时间:2011-05-12 09:57:46

标签: java xml dom servlets document

Document xmlDocument = builder.parse(request.getInputStream());

这里的请求是作为POST发送的; 但是我无法在servlet中获取请求进程。 抛出以下异常

org.xml.sax.SAXParseException: Content is not allowed in prolog.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:98)

任何人都可以给我答案。

提前致谢。

2 个答案:

答案 0 :(得分:0)

Document xmlDocument = builder.parse(request.getInputStream());

此Java代码用于解析XML。

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
this.xmlHttp.open("POST",url, this.async);
this.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.xmlHttp.send("sessionid=324trt");

此浏览器JavaScript代码会发送application/x-www-form-urlencoded个数据。有效负载sessionid=324trt不是XML。

读取参数的正确方法是via the parameter map

String sessionid = request.getParameter("sessionid");

答案 1 :(得分:0)

执行上面的@McDowell建议并将您的xml发布为POST参数。然后读取servlet中的参数并执行此操作 -

String postedXml = request.getParameter("postedXml");
StringReader reader = new StringReader( postedXml );
InputSource inputSource = new InputSource( reader );
Document doc = builder.parse( inputSource );
reader.close();