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?
You have two hardles,
Content-Type="text/xml"that server is expecting.Your XML is incorrect. It should be like below, no unnecessary newlines
\r\netc and namespace should start withdouble quoterather 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.