首页 > 解决方案 > 什么是 C# WCF AddressHeader 的 Java Apache CXF 等价物?

问题描述

我正在尝试从 Java 后端服务访问用 C# 编写的基于 SOAP 的旧系统。此 C# 应用程序正在寻找在每个请求中填充特定值的AddressHeader 。我正在使用 Apache CXF 创建对该服务的请求。不幸的是,在我的一生中,我无法找到如何将此地址标头添加到每个请求中。有谁知道 Java 中的等价物是什么以及如何使用 Apache CXF 添加它?

标签: javawcfcxf

解决方案


地址标头与标头相同SOAP,因此我们只需要为每个请求添加特定的 SOAP 标头即可成功调用。
这是我在网上找到的一个例子。

ClientProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(singz.ws.cxf.sample.SampleServiceInterface.class);
factory.setAddress("http://xxx.xxx.com/services/SampleService/v1");
        SampleServiceInterface serviceClient = (SampleServiceInterface) factory.create();
        Client proxy = ClientProxy.getClient(serviceClient);
        List<Header> headersList = new ArrayList<Header>();
        Header testSoapHeader1 = new Header(new QName("uri:singz.ws.sample", "soapheader1"), "SOAP Header Message 1", new JAXBDataBinding(String.class));
        Header testSoapHeader2 = new Header(new QName("uri:singz.ws.sample", "soapheader2"), "SOAP Header Message 2", new JAXBDataBinding(String.class));
        headersList.add(testSoapHeader1);
        headersList.add(testSoapHeader2);
        proxy.getRequestContext().put(Header.HEADER_LIST, headersList);

请参考以下链接,希望对您有用。
https://dzone.com/articles/apache-cxf-how-add-custom-soap-0
如何将 wsdl 中定义的 Soap Header 添加到 CXF 中的 Web 服务客户端?
https://dzone.com/articles/apache-cxf-how-add-custom-soap
如果有什么我可以帮忙的,请随时告诉我。


推荐阅读