【发布时间】:2017-12-18 16:32:22
【问题描述】:
我们有一个简单的骆驼路线“从->到”:
<from uri="cxf:bean:testServiceProvider?loggingFeatureEnabled=true" />
<to uri="cxf:bean:testServiceClient?loggingFeatureEnabled=true" />
此路由类似于第三方网络服务的路由器或代理:
- 客户端将其用作端点。
- 将 WSS 标头添加到 Soap 消息中。
- 将请求路由到真实端点。
此代理中的服务和客户端是使用 cxf bean 创建的。
端点的网络服务似乎需要Content-Length HTTP 标头,但cxf 对端点的请求默认不包含此标头。此代理完成的所有请求都会收到相同的响应:
HTTP response '411: Length required' when communicating with https://host:port/testService
我们尝试使用 OutInterceptor 添加此标头,将其添加到 PROTOCOL_HEADERS:
Map<String, List> headers = (Map<String, List>) message.get(Message.PROTOCOL_HEADERS);
headers.put("Content-Length", Collections.singletonList(String.valueOf(messageLength)));
两个问题:
如何知道messageLength的值?
有没有更简单的方法来做到这一点?
谢谢!
【问题讨论】:
标签: java web-services http-headers apache-camel cxf