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;

Tags:

Sockets

Java

Soap