POST REQUEST: XmlDocument mit getInputStream einlesen!

Status
Nicht offen für weitere Antworten.

Robson

Aktives Mitglied
Hallo, 8)

ich weiss ich bin kurz vor dem durchbruch :wink:
brauch nur noch eine kleine Hilfe.

so sieht das ganze aus.

Code:
ServletInputStream inputstream = request.getInputStream();

			XmlDocument XMLdoc = null;
			DocumentBuilderFactory factory =
			DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = null;
		
                                                try {
				builder = factory.newDocumentBuilder();
			} catch (ParserConfigurationException e) {
				e.printStackTrace();
			}
			
			try {
				XMLdoc = (XmlDocument)builder.parse(inputstream);
			} catch (SAXException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}

Wenn ich ihm jetzt nen POST Request mit ner XML nachricht im Body schicke reagiert er gar nicht.
Wenn ich aber ne ungültige XML Schicke. z.b lass ich nen Attribute weg oder so meldet er den Richtigen fehler.
Also gehe ich davon aus das er eine XML nachricht erwarte. Und auch erkennt wenn an ihr was falsch ist.
Aber wieso tut er bei einer Richtigen gar nichts?
 
also laut der Antwort des Server fällt er in folgender Zeile auf die Nase

XMLdoc = (XmlDocument)builder.parse(inputstream);

hab auch noch die Fehlermeldung gefunden

2004-09-08 15:44:44 StandardWrapperValve[Doorlock]: Servlet.service() for servlet Doorlock threw exception
java.lang.ClassCastException
at doorlock.Doorlock.doPost(Doorlock.java:158)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
at java.lang.Thread.run(Unknown Source)
 
lies erstmal den InputStream in einen String ein und lass dir das Ergebnis anzeigen!

what is at doorlock.Doorlock.doPost(Doorlock.java:158)
 
Code:
XMLdoc = builder.parse(inputstream);

juhuu ! so gehts :lol: allerdings setzt er noch nen [#document: null] vor die XML Message .. weiss jemand zufällig wo das wegkommt?
 
lies erstmal den InputStream in einen String ein und lass dir das Ergebnis anzeigen!

Und was soll XmlDocument sein - nimmst du jetzt wieder JDOM!?!

Document doc = usw....
 
so hab ich es jetzt und es funktioniert Bombig :lol:

Code:
tring remoteIP = request.getRemoteAddr();
			System.out.println("Message from: "+remoteIP);
		
			ServletInputStream inputstream = request.getInputStream();

			Document XMLdoc = null;
			DocumentBuilderFactory factory =
			DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = null;
			
			try {
				builder = factory.newDocumentBuilder();
			} catch (ParserConfigurationException e) {
				e.printStackTrace();
			}
			
			try {
				XMLdoc = builder.parse(inputstream);
			} catch (SAXException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
	
	Element mess = (Element) XMLdoc.getElementsByTagName("MESSAGE").item(0); 
    mess.setAttribute("IP",remoteIP); 
    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    Transformer transformer = null;
		
    try {
			transformer = tFactory.newTransformer();
			} catch (TransformerConfigurationException e2) {
			e2.printStackTrace();
			}
			
	DOMSource source = new DOMSource(XMLdoc); 
    StringWriter resultStringBuffer = new StringWriter(); 
    	
    try {
    		transformer.transform(source, new StreamResult(resultStringBuffer));
			} catch (TransformerException e3) {
			e3.printStackTrace();
			} 
    
	String result = resultStringBuffer.toString(); 
	System.out.println(result);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben