我使用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) ) );