【发布时间】:2014-12-02 14:47:43
【问题描述】:
我正在使用Spring 和CXF 创建一个soap webservice 客户端。
Web 服务需要 HTTP 标头 Authorization=[pass] 进行身份验证。到目前为止,我实现如下:
Map<String, Object> context = ((BindingProvider) port).getRequestContext();
Map<String, List<String>> headers = new HashMap<>();
headers.put("Authorization", Arrays.asList("Basic pass")); //fixed value so far
context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
但现在我必须根据实际执行客户端的用户动态更改基本通行证。
问题:当我将 CXF 与 Spring 一起使用时,我的 CXF 客户端由 Spring 管理和共享代理。
因此,每当我更改port 中的 HTTP 标头时,它都会影响所有实例!
如何在发送 Web 服务请求期间动态添加 HTTP 身份验证标头?
我必须准确地创建一个 http 标头,例如:Authorization=[pass]
【问题讨论】:
标签: java spring web-services soap cxf