Невозможно изменить URI SOAP в конверте с помощью java SoapMessage

Я пытаюсь создать простое сообщение SOAP для отправки от клиента, но я (похоже )не могу изменить URI пространства имен "soap" в конверте.

Вот как ДОЛЖЕН выглядеть заголовок мыла:

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope/"  soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/">... </soap:Envelope>

Итак, у меня есть следующий код:

    final SOAPMessage sm = MessageFactory.newInstance().createMessage();

    final SOAPPart sp = sm.getSOAPPart();
    final SOAPEnvelope se = sp.getEnvelope();
    final SOAPHeader sh = se.getHeader();
    final SOAPBody sb = se.getBody();

    se.removeNamespaceDeclaration(se.getPrefix());
    se.addNamespaceDeclaration("soap", "http://www.w3.org/2001/12/soap-envelope");
    se.setPrefix("soap");
    sb.setPrefix("soap");
    sh.setPrefix("soap");
    se.setEncodingStyle("http://www.w3.org/2001/12/soap-encoding/");

Однако, когда я печатаю сообщение перед отправкой, ниже мой конверт:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/">

Обратите внимание на различия в URI xmlns :мыло в разделе "должно -быть" и актуальное.

Если я изменю первый аргумент вызова addNamespaceDeclarationна «soapy» вместо «soap», я получу следующий конверт:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapy="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding/">

Я предполагаю, что это может быть как-то связано с тем фактом, что вызов addNamespaceDeclarationа не что-то вроде changeNamespaceDeclaration, и он игнорируется, учитывая, что пространство имен уже присутствует, но я не могу найти что-то, что работает (Я уже пробовалsetAttributeNS).

РЕДАКТИРОВАТЬ :Я только что понял, что setAttributeNSглупо, потому что это меняет пространство имен, а не URI. РЕДАКТИРОВАТЬ СНОВА :Я немного запутался, поскольку я продолжаю поиск, я иногда вижу, что именование идет soap:"Namespace", поэтому в этом смысле я хочу изменить пространство имен... но я думал, что пространство имен было " мыло" часть. Есть уточнения?

Это мой первый пост, поэтому я извиняюсь, если спрашиваю что-то, что уже было решено, но я поискал, и большая часть того, что я нашел, связано с изменением пространства имен (, например, из SOAP -ENV, которое является пространством имен по умолчанию, для мыла ), а не самого URI. Заранее спасибо.

-M

6
задан MandM 23 April 2012 в 18:43
поделиться