java Web Service Client, 添加 http headers

2022-09-02 00:21:54

在 wsdl 上使用 wsimport 创建了一个 java Web 服务客户端之后,我需要为 http 请求中嵌入的每个 soap 消息设置授权标头。生成了javax.xml.ws.Service的子类后,我如何为每个传出请求附加http标头???


答案 1

这是基于Femi的答案的代码。

弄清楚可能有点棘手。效果很好!

Service jaxwsService = Service.create(wsdlURL, serviceName);
Dispatch<SOAPMessage> disp = jaxwsService.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

//Add HTTP request Headers
Map<String, List<String>> requestHeaders = new HashMap<>();
requestHeaders.put("Auth-User", Arrays.asList("BILL_GATES"));
disp.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, requestHeaders);

答案 2

您可以将带有自定义标头的映射传递给 BindingProvider(我相信您可以设置 MessageContext.HTTP_REQUEST_HEADERS 属性)。尝试创建授权标头并将其传入。


推荐