Request Body

kloakenratte

Grünschnabel
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
 
Zuletzt bearbeitet:
Hallo,
ich habe spontan keine Idee. Wenn das zweite Servlet erfolgreich aufgerufen wird, funktioniert das URLConnection Konstrukt wohl.

Zum Eingrenzen und Debuggen würde ich sicherstellen, dass der XMLString wirklich etwas enthält und nicht evtl leer ist.
Danach könntest du mit einer simpleren Schleife mal byte für byte aus dem Stream lesen um zu schauen was denn da überhaupt ankommt und um auszuschliessen, dass da mit den char[] Buffern was schiefgeht.
Code:
        try {
            BufferedReader objBuffReader = new BufferedReader(new StringReader("Hallo Welt"));
            int x;
            while ((x = objBuffReader.read()) != -1) {
                System.out.println((char) x);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
 
sorry, aber das ist total kontraproduktiv... das ist eine standardprozedur, sowas auslesen, wieso sollt ich das extra durchtesten?
hab den fehler im übrigen schon gefunden, ist nicht an dem codestück gelegen. dieses funktioniert einwandfrei...
 

Neue Beiträge

Zurück