Java 从CXF服务实现中添加HTTP头
我目前正在实现soap服务,需要从另一个soap服务(服务A)调用一个soap服务(服务B)。在服务A中,如何将发出的SOAP请求的HTTP头而不是SOAP头设置为服务B 目前我正在使用JAXWSDynamicClient工厂,如下所示: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?
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(名称空间、操作)、服务参数);