質問: 自分のWebサービスのコードの中で、どのようにしてヘッダを取得/設定するのですか?
回答: MessageContextオブジェクトを使用します。
ここにいくつかのサンプルコードを挙げます
// 現在の MessageContext を取得します MessageContext ctx = org.apache.axis.MessageContext.getCurrentContext(); // リクエストの SOAP エンベロープを取得します SOAPEnvelope env = ctx.getRequestMessage().getSOAPEnvelope(); // ヘッダを取得します SOAPHeaderElement soapHeaderElement = env.getHeaderByName(headerNamespace, headerName); // ヘッダの値を取得します。複雑な型である可能性もあります Object value = soapHeaderElement.getObjectValue();
質問: クライアントへのレスポンスの中にどのようにしてヘッダを設定するのですか?
回答: SOAPHeaderElementを作成し、レスポンスメッセージのSOAPEnvelopeに追加します。
// 現在の MessageContext を取得します
MessageContext ctx = org.apache.axis.MessageContext.getCurrentContext();
// リクエストの SOAP エンベロープを取得します
SOAPEnvelope env = ctx.getResponseMessage().getSOAPEnvelope();
// SOAP ヘッダオブジェクトを作成します
SOAPHeaderElement headerElement =
new org.apache.axis.message.SOAPHeaderElement(headerNamespace, headerName, headerValue);
headerElement.setMustUnderstand(mustUnderstand);
// ヘッダを設定します
env.addHeader(headerElement);