Я хочу отправить soap
запрос с ssl authentication
Обычно я получаю сервис с текущим кодом
URL url = TransactionImports.class.getResource("agentWsdl.wsdl");
AgentServices agentServices = new AgentServices_Service(url, new QName("agentTargetNameSpace", "AgentServices")).getAgentServicesPort();
BindingProvider bindingProvider = (BindingProvider) agentServices;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, applicationProperties.getProperty("service.url"));
bindingProvider.getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, applicationProperties.getProperty("service.timeout"));
return agentService;
но чем мне нужно добавить ssl authentication
, мой сертификат my-certificate.pfx
file
и я изменил код для добавления этого сертификата следующим образом
String keyPassphrase = "myPassword";
AgentServices agentServices = new AgentServices_Service(url, new QName("agentTargetNamespace", "AgentServices")).getAgentServicesPort();
SSLContextBuilder sslBuilder = SSLContexts.custom();
SSLContext sslContext = sslBuilder.loadTrustMaterial(ClientUtil.class.getResource("/my-certificate.pfx"), "myPassword".toCharArray())
.build();
BindingProvider bindingProvider = (BindingProvider) agentServices;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, applicationProperties.getProperty("service.url"));
bindingProvider.getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, applicationProperties.getProperty("service.timeout"));
bindingProvider.getRequestContext().put(BindingProviderProperties.SSL_SOCKET_FACTORY, sslContext.getSocketFactory());
но это не работает. Я получаю сообщение об ошибке при попытке отправить запрос
Ошибка выглядит как java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
Я впервые пытаюсь отправить запрос с ssl authentication
, что я сделал не так? Можете ли вы посоветовать мне какие-нибудь хорошие решения, как я могу установить сертификат для вызова службы?