我目前正在实现 soap 服务,我需要从另一个 soap 服务(服务 A)调用一个 soap 服务(服务 B)。从服务 A,如何设置 HTTP header 而不是向服务 B 发出 soap 请求的 SOAP header 。
目前我正在使用 JaxWsDynamicClientFactory 如下,
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(localhost/services/test?wsdl");
results = client.invoke(new QName(namespace,operation), service parameters);
最佳答案
您可以使用 CXF RequestContext 添加 header 。例如,要添加名为 Header-Name
且值为 headerValue
的 header :
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);
关于java - 从 CXF 服务实现中添加 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26018885/