Ответ веб-службы содержит недопустимый символ XML
Мое приложение подключается к веб-сервису rpc/encoded. Я использую Axis 1.4. Когда веб-служба отправляет ответ, он отправляет недопустимый символ, а затем исключение:
http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException:
An invalid XML character (Unicode: 0x3) was found in the element content of the document.
Кодировка xml - "ISO-8859-1". Я думаю, что это проблема.
Мой вопрос: есть ли какая-либо конфигурация, которую я могу сделать в своем приложении, чтобы принять этот недопустимый символ?
2 ответа
Я решил проблему, поместив метод внутри org.apache.axis.handlers.LogHandler для поиска и уничтожения недопустимых символов перед анализом содержимого внутри ответа xml.
Чтобы создать свой собственный LogHandler
Метод поиска и уничтожения нелегальных персонажей
Внутри метода logMessages вашего нового LogHandler поместите следующее:
private void logMessages(MessageContext msgContext) throws AxisFault {
...
msgContext.setResponseMessage(new Message(
stripNonValidXMLCharacters(((Message) msgContext
.getResponseMessage()).getSOAPPartAsString())));
...
}
"Мое приложение подключается к веб-службе rpc / encoded".
Это подвох. Служба является "rpc / encoded", которая не соответствует WS-I. Разработчики решили после некоторой жаркой дискуссии в прошлом не исправлять эту ошибку.