Как заставить стороннюю библиотеку принимать text/plain как text/xml (СМЭВ)
В нашем проекте мы отправляем запросы на СМЭВ при помощи древней легаси библиотеки (voskhod)
public String getRequests(String namespaceForSmev3, String rootElementLocalName) throws Exception
{
DigitalSignatureFactory.init("JCP");
MessageExchangeEndpoint messageExchange = MessageExchangeEndpoint.create(smevUrl, "", keyStore.getPrivateKey(), keyStore.getCertificate());
try
{
QName qName = new QName(namespaceForSmev3, rootElementLocalName);
GetRequestResponse requestResponse = messageExchange.getRequest(qName);
DOMResult domResult = new DOMResult();
MessageExchangeEndpoint.getJAXBMarshaller().marshal(requestResponse, domResult);
String elementToString = XmlUtils.elementToString(((Document)domResult.getNode()).getDocumentElement());
messageExchange.ack(requestResponse);
return elementToString;
}
catch (Exception e)
{
LOG.error("Error while getting requests", e);
return "";
}
}
Однако, сейчас получаем следующее исключение:
Error while getting requests
ru.voskhod.smev.message_exchange_service_client.WebServiceClientException: com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/plain;charset=utf-8 Supported ones are: [text/xml]
at ru.voskhod.smev.message_exchange_service_client.MessageExchangeEndpoint.getRequest(MessageExchangeEndpoint.java:457)
Связано оно с тем, что ответ сейчас отдается в text/plain, а не text/xml как это было раньше
Выглядит проблемный метод так (из интерфейса SMEVMessageExchangePortType)
@WebResult(
name = "GetRequestResponse",
targetNamespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1",
partName = "parameters"
)
GetRequestResponse getRequest(@WebParam(name = "GetRequestRequest",targetNamespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1",partName = "parameters") GetRequestRequest var1) throws InvalidContentException, SMEVFailureException, SenderIsNotRegisteredException, SignatureVerificationFaultException, UnknownMessageTypeException;
Вызывается это добро из класса MessageExchangeEndpoint
Возможно ли как-то подхачить метод, чтобы он принимал text/plain и обрабатывал также как text/xml?
Или надо переключаться на другую либу? Если да, то посоветуйте, пожалуйста