Использование WSDL2Java
Если вы использовали инструмент Axis2 WSDL2Java, вы как бы застряли на том, что он генерирует для вас. Однако вы можете попробовать изменить каркас в этом разделе:
// create SOAP envelope with that payload
org.apache.axiom.soap.SOAPEnvelope env = null;
env = toEnvelope(
getFactory(_operationClient.getOptions().getSoapVersionURI()),
methodName,
optimizeContent(new javax.xml.namespace.QName
("http://tempuri.org/","methodName")));
//adding SOAP soap_headers
_serviceClient.addHeadersToEnvelope(env);
Чтобы добавить пространство имен в конверт, добавьте куда-нибудь эти строки:
OMNamespace xsi = getFactory(_operationClient.getOptions().getSoapVersionURI()).
createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
env.declareNamespace(xsi);
Ручная кодировка
Если вы «вручную кодируете» сервис, вы можете сделать что-то вроде этого:
SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = fac.getDefaultEnvelope();
OMNamespace xsi = fac.createOMNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi");
envelope.declareNamespace(xsi);
OMNamespace methodNs = fac.createOMNamespace("http://somedomain.com/wsinterface", "ns1");
OMElement method = fac.createOMElement("CreateEntityTypesResponse", methodNs);
//add the newkeys and errors as OMElements here...
Разоблачение службы в Аар
Если вы создаете службу внутри aar, вы можете повлиять на сообщение SOAP, созданное с помощью свойств целевого пространства имен или пространства имен схемы (см. эту статью ).
Надеюсь, это поможет.