11

Netbeans を使用して、WSDL ファイルに基づいて Web サービス クライアントを自動的に作成しています。これはうまく機能しますが、私が使用している Web サービスでは、ID を証明するためにすべての Web サービスに HTTP ヘッダーでカスタム Cookie を渡す必要があります。

という名前の 1 つの Web サービスを使用Utilityして、承認を取得します。これにより、任意の Web サービスへの後続のすべての呼び出しで提供する必要がある Cookie が設定されます。

これは、Web サービスのポートの BindingProvider を に設定javax.xml.ws.session.maintainすることで実現できます。trueこれは、Web サービスのメソッドへの後続の呼び出しに最適Utilityです。問題は、これがその単一の Web サービスのセッション/Cookie のみを維持することです。他にも必要です。

どうすればこれを実現できますか?という名前のの Web サービスに Cookie を渡す必要があります。HistoryUtility と History の両方を拡張して同じセッション状態を共有できるスーパー Service クラスを持つことは可能ですか?

4

2 に答える 2

17

私は解決策を見つけました。

呼び出しを行った後、これを使用して応答ヘッダーを取得できます。

((BindingProvider)port).getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS);

Set-Cookieヘッダーを見つけて、その値を保存します。

次に、次のリクエストの前に (任意の Web サービスで)、Cookie ヘッダーを設定できます。

((BindingProvider)port).getRequestContext().put(
            MessageContext.HTTP_REQUEST_HEADERS,
                Collections.singletonMap("Cookie", Collections.singletonList(cookieValue)
            )
        );
于 2013-02-05T14:47:54.450 に答える