如何将Azure订阅密钥头添加到JAX-WS SOAP消息
我正试图通过Azure发送SOAP消息,我需要将订阅密钥添加到我的JAX-WS消息中如何将Azure订阅密钥头添加到JAX-WS SOAP消息,azure,soap,header,jax-ws,Azure,Soap,Header,Jax Ws,我正试图通过Azure发送SOAP消息,我需要将订阅密钥添加到我的JAX-WS消息中 NewSubscription_Service test = new NewSubscription_Service(); NewSubscription newSubscription = test.getNewSubscription(); WSBindingProvider binding = (WSBindingProvider) newSubscription; bi
NewSubscription_Service test = new NewSubscription_Service();
NewSubscription newSubscription = test.getNewSubscription();
WSBindingProvider binding = (WSBindingProvider) newSubscription;
binding.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, soapEndpointUrlAzure);
binding.setOutboundHeaders(
Headers.create(new QName("Ocp-Apim-Subscription-Key"),"xxx")
);
当我尝试发送此消息时,它会给我一个401,并解释如下:
由于缺少订阅密钥,访问被拒绝。确保在向API发出请求时包含订阅密钥
我应该以另一种方式添加标题吗?我不太习惯SOAP消息,所以欢迎提供任何帮助。我发现您不应该为此使用OutboundHeader。 下面的代码是如何添加标题:
Map<String, List<String>> requestHeaders = new HashMap<>();
requestHeaders.put("Ocp-Apim-Subscription-Key", Arrays.asList("xxx"));
binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, requestHeaders);
Map requestHeaders=new HashMap();
requestHeaders.put(“Ocp Apim订阅密钥”,Arrays.asList(“xxx”);
binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,requestHeaders);