Форматирование конвертов мыльных сообщений - PullRequest
0 голосов
/ 29 июня 2018

Я использую JAva HttpsURLConnection для отправки сообщения конверта 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: неподдерживаемый тип содержимого: application / x-www-form-urlencoded Поддерживаются следующие: [text / xml]

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

С уважением,

1 Ответ

0 голосов
/ 30 июня 2018

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

  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>

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

...