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) {
}
}
}