Некоторые сведения: это созданный WebLogic Service Services, созданный через Eclipse. Я считаю, что это использует клиентген за кулисами.SOAP Service Client не отправляет заголовки Mime для Basic Auth
Я пытаюсь сделать SOAP-вызов, который требует предварительной базовой аутентификации. Запрос отправляется, но настройки Mimeheaders, которые я устанавливаю, не собираются с ним. Получатель звонка сообщил мне, что сам запрос проходит, но никаких настроенных мною mimeheaders нет.
Сервисный вызов довольно прост.
DescriptionService service = new DescriptionService(wsdlLocation, new QName("urn:descriptionService.service.company.com", "DescriptionService"));
service.setHandlerResolver(new HandlerResolver() {
@SuppressWarnings("rawtypes")
@Override
public List<Handler> getHandlerChain(final PortInfo portInfo) {
final List<Handler> handlerList = new ArrayList<Handler>();
handlerList.add(new SOAPDescriptionServiceHeaderHandler());
return handlerList;
}
});
DescriptionServicePortType portType = service.getDescriptionServicePort();
DescriptionRequest request = new DescriptionRequest();
request.setId(id);
DescriptionResponse description = portType.describe(request);
Обработчик где я поставил Mimeheaders:
@Override
public boolean handleMessage(final SOAPMessageContext context) {
final Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
final SOAPMessage message = context.getMessage();
if (outboundProperty.booleanValue()) {
try {
MimeHeaders mimeheaders = message.getMimeHeaders();
String encodedAuth = Base64.encode(new String("un:pw").getBytes());
mimeheaders.addHeader("Authorization", "Basic " + encodedAuth);
this.logMessage(message, outboundProperty.booleanValue(), false);
} catch (final Exception e) {
// Log Error
}
} else {
this.logMessage(message, outboundProperty.booleanValue(), false);
}
return true;
}
Он ударил этот обработчик и установить mimeheaders. Если я установил точку останова и посмотрю на заголовки mime, прежде чем он покинет метод handleMessage, я увижу, что они установлены.
Я могу запросить запрос и получить ответ в SoapUI. Я настроил упреждающий базовый auth, и он отлично работает. Когда я отправляю запрос через Java-клиент, я не получаю ответа и фактически получаю сообщение об ошибке, указывающее, что это неправильный тип содержимого. Я считаю, что эта ошибка относится к ответу на неисправность, поскольку я фактически не получаю ответ (не попадает в метод handleMessage() в обработчике), и я знаю, что запрос проходит через text/xml, что является тем, что ошибка просит.
Я не уверен, что это имеет какое-то отношение к «превентивному» требованию? Есть ли способ установить базовый auth, настроенный таким образом как превентивный?
Мысли? Любая помощь будет оценена по достоинству.