加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JAX-WS客户端:维护多个服务中的会话/ Cookie

发布时间:2020-12-14 05:46:12 所属栏目:Java 来源:网络整理
导读:我使用Netbeans根据WSDL文件自动创建webservice客户端.这很好,除了我使用的webservices要求我将HTTP头中的自定义cookie传递给每个webservice,以证明我的身份. 我使用一个名为Utility的webservice来获取我的授权.这将设置一个cookie,需要在所有后续调用中提供
我使用Netbeans根据WSDL文件自动创建webservice客户端.这很好,除了我使用的webservices要求我将HTTP头中的自定义cookie传递给每个webservice,以证明我的身份.

我使用一个名为Utility的webservice来获取我的授权.这将设置一个cookie,需要在所有后续调用中提供给任何Web服务.

这可以通过在Web服务的端口的BindingProvider上将javax.xml.ws.session.maintain设置为true来实现.这对于随后调用Utility webservice中的方法非常有用.
问题在于,它仅维护该单个Web服务的会话/ cookie.我也需要它.

我需要将cookie传递给一个名为History的单独webservice如何实现?有一个超级服务类,实用程序和历史可以扩展和共享相同的会话状态是可行的?

解决方法

我找到了一个解决方案

拨打电话后,您可以使用此方式获取响应标头:

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

找到Set-Cookie头并存储其值.

然后在您的下一个请求(在任何webservice)之前,您可以设置Cookie标题:

((BindingProvider)port).getRequestContext().put(
            MessageContext.HTTP_REQUEST_HEADERS,Collections.singletonMap("Cookie",Collections.singletonList(cookieValue)
            )
        );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读