Форматирование конверта мыльного сообщения

Я использую JAva HttpsURLConnection для отправки сообщения конверта Soap. См. ниже полезную нагрузку моего конверта Soap:

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();

Однако сообщение сервера выглядит следующим образом:

com.sun.xml.ws.transport.http.HttpAdapter E Неподдерживаемый тип содержимого: application/x-www-form-urlencoded Поддерживаемые: [text/xml] com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type: application/x-www-form-urlencoded Поддерживаемые: [text/xml]

Не могли бы вы подсказать, как отформатировать пейлод сообщения, чтобы избежать ошибки сервера.

С уважением,


person SocketM    schedule 29.06.2018    source источник
comment
Почему вы не используете xsd для создания мыльного сообщения?   -  person zappee    schedule 29.06.2018
comment
Здравствуйте, Zeppee, за stackoverflow.com/questions/51080615/   -  person SocketM    schedule 29.06.2018


Ответы (1)


У тебя есть два хардла,

  1. Вы не устанавливаете точный HTTP-заголовок Content-Type="text/xml", который ожидает сервер.
  2. Ваш XML неверен. Это должно быть так, как показано ниже, без ненужных символов новой строки \r\n и т. д., а пространство имен должно начинаться с double 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>

Это должно работать, если вы сделаете два вышеуказанных изменения.

person Red Boy    schedule 30.06.2018