# Read Request Body



## kloakenratte (3. Dez 2008)

Hallo!


Also ich krieg in ein Servlet im GET eine Anfrage und will nun das ganze weiterleiten an ein anderes Servlet ins POST. Vor dem Aufruf des zweiten Servlets will ich in den POST Body ein xml reinschreiben, um dieses dann im zweiten Servlet auslesen zu können. Soweit krieg ich das hin, also das Aufrufen des zweiten Servlets. Krieg auch keinen Fehler beim Schreiben des xmls. Aber wenn ich im zweiten Servlet das xml auslesen will, ist da nichts.

--- Hier der Code zum Schreiben des XML: ---
URL objUrl = new URL(strNewRequestString);

HttpURLConnection httpConnection = (HttpURLConnection) objUrl.openConnection(); httpConnection.setRequestMethod("POST");
httpConnection.setRequestProperty("Content-Length", "" + Integer.toString(strXmlData.getBytes().length));
httpConnection.setDoInput(true);
httpConnection.setDoOutput(true);
httpConnection.setRequestProperty("Cookie", "JSESSIONID=" + strSessionID);

OutputStreamWriter objOutStreamWriter = new OutputStreamWriter(httpConnection.getOutputStream());
objOutStreamWriter.write(strXmlData);
objOutStreamWriter.flush();
objOutStreamWriter.close();
...

--- Auslesen des XML im zweiten Servlet: ---
BufferedReader objBuffReader = request.getReader();

objXmlRequestBuffer = new StringBuffer(); // prepare result string buffer
char[] c = new char[51200];

for (int n; (n = objBuffReader.read(c)) != -1; )
   objXmlRequestBuffer.append(new String(c, 0, n));

objBuffReader.close();

System.out.println("length " + objXmlRequestBuffer.length()); // --> ist 0

strRequestXML = objXmlRequestBuffer.substring(objXmlRequestBuffer.indexOf("<message>")); // ERROR an dieser Stelle


...

Hat vielleicht einer eine Idee wieso das nicht funktioniert?

DANKE!

Sandra


----------



## FArt (4. Dez 2008)

Es sieht so aus, als hättest du ein Problem mit einem Lösungsversuch für das eigentliche Problem.

Versuche doch das eigentliche Problem mal zu beschreiben , vielleicht gibt es dafür eine bessere Lösung.

Sonst hilft auch Google schon sehr gut:
http://www.google.de/search?hl=de&q=servlet+post+xml&btnG=Google-Suche&meta=

Vermutlich geht es um Encodingprobleme oder character escaping, oder doch um einen falschen Ansatz?


----------



## kloakenratte (4. Dez 2008)

Hallo!

Also, mein Servlet1 wird im doGet aufgerufen. In diesem doGet baue ich mir dann den Aufruf von Servlet2 zusammen. Dieses soll aber im doPost von Servlet1 aufgerufen werden. Weiters möchte ich einen String (xml Daten) in den Post-Body schreiben, damit Servlet2 dieses xml dann verarbeiten kann. Das heißt, ich muss in den Request ein xml schreiben, sollte eben beim ersten Codestück gelöst sein (weiß aber eben nicht, ob es auch wirklich funktioniert). Und Servlet2 soll dieses xml dann auslesen (zweites Codestück). Im Endeffekt erhält Servlet2 aber nichts und ich weiß beim besten Willen nicht weshalb.


----------



## maki (4. Dez 2008)

War da nicht ein Problem damit request#getReader 2 x aufzurufen?


----------



## kloakenratte (4. Dez 2008)

Wüßt ich nichts... Mein Problem ist wie gesagt, dass die Message nie ankommt. 
Hab auch was im Google gefunden (http://coding.derkeiler.com/Archive/Java/comp.lang.java.programmer/2006-02/msg02550.html) --> selbes Problem. Leider keine Lösung. Entweder schreib ich falsch rein, oder aber Servlet2 sucht zu früh nach der Message (bevor diese fertig geschrieben wurde). 
Hatte schon jemand mal das Problem?


----------

