如何将wsdl中定义的Soap Header添加到CXF中的Web服务客户端?
我有一个wsdl定义了一个在调用Web服务时需要传递的soap头。
示例SOAP Header是:
User
CXF的wsdl2java生成了一个“AuthenticationInfo”java类,我可以创建并填充用户名和密码,但我不知道在调用Web服务时将其传递给CXF Client的正确方法。
嗯,最简单的方法是创建一个Header
对象的ArrayList
并添加所有参数或Map
并将所有头文件添加为map.put("param1",param1).
最后获取您的请求上下文并将此地图的arraylist添加为
requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, soapHeaders);
如果您尝试传递自定义soap标头,请参阅此链接 。
本次讨论中提到了一般性缺陷。 它可能对你有所帮助。
如果在WSDL中定义了SOAP标头,则可以将其指定为隐式或显式 。
CXF提供了wsdl2java工具,用于从WSDL生成Java服务接口。 在显式标头的情况下,SOAP标头会自动检测并作为生成的服务接口的一部分提供。
如果已隐式定义SOAP标头,则需要启用-exsh
选项,该选项触发隐式SOAP标头的处理。 SOAP标头将再次作为生成的服务Java接口的一部分提供。 如果你想要一个具体的例子,你可以查看我发表的关于如何添加cxf soap标头的博客文章。
请注意,CXF还支持其他添加SOAP标头的方法 。