Robson Geschrieben 8. September 2004 Geschrieben 8. September 2004 Hallo ich will das mein Servlet ein XML einliest an dieses File noch die IP des Sender hängt und dieses dan als Post request auf eine andere Adresse schickt. Ich hab es bis jetzt so. Da anhängen der IP fuktioniert nur will er keinen anständigen Post Request senden. Jemand ne Ahnung woran das liegen kann? import java.io.*; import java.net.InetAddress; import java.net.Socket; import javax.servlet.*; import javax.servlet.http.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; public class Doorlock extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String remoteIP = request.getRemoteAddr(); DocumentBuilder builder = null; try { builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (FactoryConfigurationError e) { e.printStackTrace(); } Document doc = null; try { doc = builder.parse("example.xml"); } catch (SAXException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } Element mess = (Element) doc.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(doc); StringWriter resultStringBuffer = new StringWriter(); try { transformer.transform(source, new StreamResult(resultStringBuffer)); } catch (TransformerException e3) { e3.printStackTrace(); } String result = resultStringBuffer.toString(); try { // Create a socket to the host String hostname = "server03"; int port = 8000; InetAddress addr = InetAddress.getByName(hostname); Socket socket = new Socket(addr, port); // Send header String path = "/sap/xi/adapter_plain?bs=ServerRS&interface=ROW_OUT&namespace=RS&QOS=EO"; BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8")); wr.write("POST "+path+" HTTP/1.1\r\n"); wr.write("Host: "+hostname+"\r\n"); wr.write("Accept: */*\r\n"); wr.write("Content-Length:"+result.length()+"\r\n"); wr.write("\r\n"); wr.write(result); wr.flush(); wr.close(); System.out.println(result); } catch (Exception e) { } } }
etreu Geschrieben 8. September 2004 Geschrieben 8. September 2004 Was antwortet denn der Server? Was steht im log?
Robson Geschrieben 8. September 2004 Autor Geschrieben 8. September 2004 der antwortet irgendwie gar nicht. der nimmt die xml die ich in die variable result geschrieben habe irgendwie nicht an. Wenn ich schonmal dabei bin. Ich hab da noch das Problem das ich die XML Daten die ich weiterleite zurzeit noch aus einer Datei lese. Die will ich aber jetzt aus einem POST Request lesen. Wie mache ich das? Also ein Server schickt eine XML auf mein Servelt, diese soll diese XML nun aufnehmen ip anhängen und einen neuen POST Request erzeugen und an ein anderes System schicken.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden