Как создать запрос SOAP API с UsernameToken в JAVA?

Моя программа работает на сервере, и ей необходимо выполнить клиентский вызов SOAP API с использованием Java.

Я использовал SOUPUI для генерации клиентского кода-заглушки для службы API WSDL с помощью JAX-WS Artifacts. Стороне сервера API требуется UsernameToken. Я использовал пример документа jaxws-ri «Как выполнить базовую аутентификацию в JAX-WS?» как что-то вроде ниже, чтобы вызвать API.

HelloService service = new HelloService();
Hello proxy = (service.getHelloPort());

((BindingProvider)proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "userfoo");
((BindingProvider)proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "passbar"); 

Output output = proxy.doAction();
return output.getResult();

Но я получаю исключение ниже на шаге proxy.doAction().

Исключение: com.sun.xml.ws.fault.ServerSOAPFaultException: клиент получил ошибку SOAP от сервера: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: исключение org.apache.axis2.AxisFault: CWWSS6500 Не существует кандидата на идентификацию вызывающего абонента, который можно использовать для входа в систему. возникла во время выполнения действия: com.ibm.ws.wssecurity.handler.WSSecurityConsumerHandler$1@30ed30ed Пожалуйста, просмотрите журнал сервера, чтобы найти более подробную информацию о точной причине сбоя.

в com.sun.xml.ws.fault.SOAP11Fault.getProtocolException (SOAP11Fault.java:193)
в com.sun.xml.ws.fault.SOAPFaultBuilder.createException (SOAPFaultBuilder.java:125)
в com .sun.xml.ws.client.sei.StubHandler.readResponse (StubHandler.java:253)
в com.sun.xml.ws.db.DatabindingImpl.deserializeResponse (DatabindingImpl.java:181)
в com .sun.xml.ws.db.DatabindingImpl.deserializeResponse (DatabindingImpl.java:258)
Усеченный. см. файл журнала для полной трассировки стека

Не могли бы вы дать мне совет, как вызвать API с помощью UsernameToken? Или нужна какая-то конфигурация на стороне сервера?


person tim    schedule 09.08.2018    source источник
comment
«Пожалуйста, просмотрите журнал сервера, чтобы найти более подробную информацию о точной причине сбоя». Ты проверил?   -  person sk2212    schedule 09.08.2018
comment
Спасибо. Проверил журнал сервера с дополнительной трассировкой стека, как обновлено выше. Но у меня до сих пор нет намеков.   -  person tim    schedule 10.08.2018


Ответы (1)


Благодаря ответу из сообщения Тип пароля JAX-WS PasswordText. Я решил свою проблему. Также со ссылкой на сообщение JAX-WS: обработчик SOAP на стороне клиента.

person tim    schedule 13.08.2018