Java 从CXF服务实现中添加HTTP头

Java 从CXF服务实现中添加HTTP头,java,web-services,soap,cxf,jax-ws,Java,Web Services,Soap,Cxf,Jax Ws,我目前正在实现soap服务,需要从另一个soap服务(服务A)调用一个soap服务(服务B)。在服务A中,如何将发出的SOAP请求的HTTP头而不是SOAP头设置为服务B 目前我正在使用JAXWSDynamicClient工厂,如下所示: JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient(localhost/services/test?

我目前正在实现soap服务,需要从另一个soap服务(服务A)调用一个soap服务(服务B)。在服务A中,如何将发出的SOAP请求的HTTP头而不是SOAP头设置为服务B

目前我正在使用JAXWSDynamicClient工厂,如下所示:

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(localhost/services/test?wsdl");

results = client.invoke(new QName(namespace,operation), service parameters); 

您可以使用CXF RequestContext添加头。例如,要添加名为
headerValue
且值为
headerValue
的标题,请执行以下操作:

    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    Client client = dcf.createClient(localhost/services/test?wsdl");
    @SuppressWarnings("unchecked")
    Map<String, List<String>> headers = (Map<String, List<String>>) client.getRequestContext()
            .get(Message.PROTOCOL_HEADERS);

    if (headers == null) {
        headers = new TreeMap<String, List<String>>(
                String.CASE_INSENSITIVE_ORDER);
        client.getRequestContext().put(Message.PROTOCOL_HEADERS, headers);
    }       
    headers.put("Header-Name", Collections.singletonList("headerValue"));
    results = client.invoke(new QName(namespace,operation), service parameters); 
JaxWsDynamicClientFactory dcf=JaxWsDynamicClientFactory.newInstance();
Client-Client=dcf.createClient(localhost/services/test?wsdl);
@抑制警告(“未选中”)
映射头=(Map)client.getRequestContext()
.get(Message.PROTOCOL_头);
if(headers==null){
headers=新树映射(
字符串。不区分大小写(顺序);
client.getRequestContext().put(Message.PROTOCOL_头,头);
}       
headers.put(“Header Name”,Collections.singletonList(“headerValue”);
结果=client.invoke(新的QName(名称空间、操作)、服务参数);