java - 从 CXF 服务实现中添加 HTTP header

标签 java web-services soap cxf jax-ws

我目前正在实现 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/

相关文章:

java - 在java中显示当前日期和最近5天的日期

java - Android - HTTPURLConnection 在发布多个输入时失败

web-services - 列出SharePoint网站中的所有警报,而不使用SharePoint API?

c# - SPML (service provisioning markup language)/C#.Net 请帮忙!

java - 自定义映射器类没有得到结果?

java - 如何在 jtextpane 中附加 css/html 表

java - 通过从 Java 执行 PowerShell 脚本来终止服务

java - Android KSoap 错误

php - 多个 NuSOAP 客户端导致 "Undefined index: _transient"错误

xml - 请求和响应之间使用不同的 SOAP 命名空间/版本是否合法?