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) { } } } Zitieren
etreu Geschrieben 8. September 2004 Geschrieben 8. September 2004 Was antwortet denn der Server? Was steht im log? Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.