Soap message envelope formatting

377 Views Asked by At

I'm using an Java HttpsURLConnection to send an Soap envelope message. See below my Soap envelope payload:

OutputStream out = con.getOutputStream();
      Writer wout = new OutputStreamWriter(out);
      
      wout.write("<?xml version='1.0' encoding='UTF-8'?>\r\n");  
      wout.write("<S:Envelope xmlns:S= ");
      wout.write(
        "'http://schemas.xmlsoap.org/soap/envelope/'>\r\n"
      );
      wout.write("<S:Body><ns2:getAccessibleDBs xmlns:ns2=");
      wout.write(
        "'http://webservice.namespace.com/'>\r\n"); 
      wout.write("  </ns2:getAccessibleDBs>\r\n");
       wout.write("  </S:Body>\r\n"); 
      wout.write("</S:Envelope>\r\n"); 
      
      wout.flush();
      wout.close();

However the server message is as follows:

com.sun.xml.ws.transport.http.HttpAdapter E Unsupported Content-Type: application/x-www-form-urlencoded Supported ones are: [text/xml] com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type: application/x-www-form-urlencoded Supported ones are: [text/xml]

How can I format the message payload in order to avoid this error?

1

There are 1 best solutions below

0
Red Boy On

You have two hardles,

  1. You're not setting accurate HTTP Header Content-Type="text/xml" that server is expecting.
  2. Your XML is incorrect. It should be like below, no unnecessary newlines \r\n etc and namespace should start with double quote rather then single quote.

    <xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body><ns2:getAccessibleDBs xmlns:ns2="http://webservice.namespace.com/"> </ns2:getAccessibleDBs></S:Body></S:Envelope>

It should work if you do above two changes.