Я пытаюсь создать простое сообщение 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