Я создаю клиент, используя сгенерированный код jax-ws. Используемые WSDL определяют количество элементов заголовка, например, внутри элемента привязки:
<wsdl:operation name="operation">
<wsoap12:operation soapActionRequired="false" style="document"/>
<wsdl:input>
<wsoap12:header message="tns:InMsg" part="header1" use="literal"/>
<wsoap12:header message="tns:InMsg" part="header2" use="literal"/>
<wsoap12:header message="tns:InMsg" part="header3" use="literal"/>
<wsoap12:header message="tns:InMsg" part="header4" use="literal"/>
<wsoap12:header message="tns:InMsg" part="header5" use="literal"/>
<wsoap12:body parts="request" use="literal"/>
</wsdl:input>
<wsdl:output>
<wsoap12:header message="tns:OutMsg" part="header1" use="literal"/>
<wsoap12:header message="tns:OutMsg" part="header2" use="literal"/>
<wsoap12:body parts="response" use="literal"/>
</wsdl:output>
<wsdl:fault name="standardError">
<wsoap12:fault name="standardError" use="literal"/>
</wsdl:fault>
</wsdl:operation>
Ради вопроса, мой вопрос сосредоточен вокруг header5
. В соответствии со спецификациями, с которыми я работаю, это необязательное значение. Таким образом, я генерирую свой клиент с использованием JAX-WS и должен либо передать значение null (для имитации значения, которое не указано), либо действительное значение заголовка в качестве параметра операции для значения header5
, которое будет добавлено в запрос. Это впоследствии создаст элемент <header5>
без дочерних элементов. Затем я сталкиваюсь с проблемой, заключающейся в том, что служба-потребитель, по-видимому, выполняет какую-то проверку этого элемента заголовка и определяет, что он искажен, поскольку обычно он содержит несколько различных дочерних элементов.
Есть ли способ, с помощью JAX-WS, по существу удовлетворить это необязательное требование заголовка, исключив элемент заголовка altogther из запроса SOAP? Похоже, что среди моих коллег существует определенное противоречие относительно того, не нарушит ли это контракт, определенный WSDL, и приведет ли служба к возврату ошибки. Существует утверждение, что клиенты .Net позволяют исключить заголовок из запроса, просто указав его как ноль.