How to send raw SOAP request in Java?
Can you try like this: you need to replace the xmldata with yours:
try {
String xmldata = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelopey> your reuest</soapenv:Envelope>";
String hostname = "10.76.243.43";
int port = 8080;
InetAddress addr = InetAddress.getByName(hostname);
Socket sock = new Socket(addr, port);
//Send header
String path = "registry/services/xds-iti18";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF-8"));
wr.write("POST "+path + " HTTP/1.1\r\n");
wr.write("Host: "+hostname+":"+port+"\r\n");
wr.write("Content-Length: "+ xmldata.length() + "\r\n");
wr.write("Content-Type: application/soap+xml; charset=\"utf-8\"\r\n");
wr.write("\r\n"); //Send data
wr.write(xmldata);
wr.flush();
// Response
BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println("Response:"+line);
}
} catch (Exception e) {
e.printStackTrace();
}
I've found an answer. This code worked for me
byte[] encoded = Files.readAllBytes(Paths.get("C:\\Users\\timofb\\Documents\\test.txt"));
String soapXml = new String(encoded, StandardCharsets.UTF_8);
SOAPConnectionFactory soapConnectionFactory =
SOAPConnectionFactory.newInstance();
java.net.URL endpoint = new URL("http://" + ip + "/cs-repository/services/xds-iti41");
SOAPConnection connection = soapConnectionFactory.createConnection();
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage(new MimeHeaders(), new ByteArrayInputStream(encoded));
AttachmentPart attachment = message.createAttachmentPart();
attachment.setContent("sm_content", "text/plain");
attachment.setContentId("[email protected]");
message.addAttachmentPart(attachment);
SOAPMessage response = connection.call(message, endpoint);
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.writeTo(out);
String strMsg = new String(out.toByteArray());
return strMsg;