Я только начал работать с SOAP веб-сервисами и наткнулся на MTOM.
У меня есть веб-сервис, для которого требуется Basi c Аутентификация, пароль,
Ниже реализация клиента:
final Authenticator myAuth = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(login,
password.toCharArray());
}
};
Authenticator.setDefault(myAuth);
D04OGADMINP4WsReceiveDocument service1 = new D04OGADMINP4WsReceiveDocument();
P4ServiceResource p4ServiceResource = service1.getP4ServiceResourceSoap12()
BindingProvider bp = (BindingProvider) p4ServiceResource;
SOAPBinding soapBinding = (SOAPBinding) bp.getBinding();
soapBinding.setMTOMEnabled(true);
DeclarerDomainDocumentResponse response = p4ServiceResource.declarerDomainDocument(request);
Две вещи, которые я не могу понять:
Когда я тестирую из своего класса java main, он работает отлично. ответ сервера в порядке.
Когда я тестирую с моего сервера Jboss, он не работает, и у меня 401 доступ запрещен. Я попытался поместить авторизацию в заголовок так:
theHeaders = new HashMap> ();
Base64 en c = new Base64 (); Строка userpassword = esbLogin + ":" + esbPassword; String encodedAuthorization = en c .encodeAsString (userpassword.getBytes ()); theHeaders.put («Авторизация», Collections.singletonList («Basi c» + encodedAuthorization)); bp.getRequestContext (). put (MessageContext.HTTP_REQUEST_HEADERS, theHeaders);
Кажется, что работает, но у меня есть эта ошибка: javax. xml .ws. soap .SOAPFaultException: в заголовке не найдена длина содержимого
Есть предложения, пожалуйста?
Спасибо