|
|
|
Как правильно канонизировать xml?
|
|||
|---|---|---|---|
|
#18+
//Подписываю Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. //Проверяю Код: java 1. - выдает true, а если конвертнуть в String а потом опять в Document - то получаю: The signature or decryption was invalid Есть подозрение что либо я конвертирую не правильно и что-то теряется, либо надо канонизировать перед проверкой. Но как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 13:18 |
|
||
|
Как правильно канонизировать xml?
|
|||
|---|---|---|---|
|
#18+
С дибильной канализацией XML я пару месяцев матюгался ((( [src JAVA] а если конвертнуть в String а потом опять в Document - то получаю: The signature or decryption was invalid [/quot] IMHO Пробелы батенька, пробелы... Отступы перед тегами и прочие дурно пахнущие субстанции. Переводы строки при передачи через HTTP.... Все уроды. Как жить? Самое прикольное, когда поведение Oracle XML parser'а на клиенте каким-то образом оказывается связанное с NLS кодировкой базы. При одной кодировке базы на сервере - отступы в XML добавляются. при другой - нет. Код не трассировал, т.ч. как объяснить такое шаманство - не знаю. Плюнул на String'и и XML и все стал делать через BLOB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 17:20 |
|
||
|
Как правильно канонизировать xml?
|
|||
|---|---|---|---|
|
#18+
С дибильной канализацией XML я пару месяцев матюгался ((( а если конвертнуть в String а потом опять в Document - то получаю: The signature or decryption was invalid IMHO Пробелы батенька, пробелы... Отступы перед тегами и прочие дурно пахнущие субстанции. Переводы строки при передачи через HTTP.... Все уроды. Как жить? Самое прикольное, когда поведение Oracle XML parser'а на клиенте каким-то образом оказывается связанное с NLS кодировкой базы. При одной кодировке базы на сервере - отступы в XML добавляются. при другой - нет. Код не трассировал, т.ч. как объяснить такое шаманство - не знаю. Плюнул на String'и и XML и все стал делать через BLOB.[/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 17:20 |
|
||
|
Как правильно канонизировать xml?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, хм... интересно про NLS_*. А можно кейс с дефектом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 17:24 |
|
||
|
Как правильно канонизировать xml?
|
|||
|---|---|---|---|
|
#18+
maytonА можно кейс с дефектом? Нет. В офисе все работало, всегда. У заказчика, при 100% том же Java-окружении (версия Java, JAR'ники) но, возможно. отличающемся Oracle-клиенте, при соединении с CL8MSWIN1251 инстансом и UTF8 инстансом поведение отличалось ((( У заказчика был RAC, в офисе просто Oracle + разные версии сервера. Использовал тип XML Type в Oracle + в класспатчах был Xalan/Xerces. Т.ч. в проекте образовывался какой-то "падеж падежей" ( C ) из Oracle XML и Xalan/Xerces. В общем, похоже, в какой-то момент какие-то фабрики начинали не те классы выдавать. Т.е. XML документ сделан на классах Oracle XML, а его сериализация идет через Xalan/Xerces.... Понять, в какой момент, какой именно тип у XML Document'а при работе... какой-то ужас. При этом поведение при сериализацией (с точки зрения отступов) совершенно другое. Теоретически, фабриками можно управлять через параметры окружения, но я окончательно не разобрался. Проще оказалось вообще выкинуть нафиг XMLType и все через BLOB и Xalan/Xerces. Хоть понятно, в какой момент какая последовательность байт подписывалась и проверялась. Т.к. подписывается именно последовательность байт . А над фактом, что стандарт канализации XML НИКАК не обрабатывает пробелы в документах - я долго смеялся сквозь слезы. Т.е. это ПЕРВАЯ вещь, которую хочется сделать над ТЕКСТОМ (xml). Убрать чехарду с пробелами и переводом строк (строка заканчивается просто \n или \n\r). Проблем было 2-е: 1. Пробелы (отступы перед тегами). Теоретически можно попытаться настроить, практически мне оказалось проще плюнуть и работать как с последовательностью байт. Я подробностей не помню, МОГУ ОШИБАТЬСЯ, но там есть еще "бяка" заложенная в стандарте Java. Стандарт канализации делался в тот момент, когда дефолтное поведение де-сериализатора (парсера) XML прописанное в стандарте было "удалять пробелы (отступы) при чтении". Т.ч. "бага" стандарта канализации, вроде, никак не сказывалась, при чтении эти проблемы радостно грохались IMHO. С какой-то версии Java (вроде от 1.5 к 1.6), стандарт для работы с XML поменяли. И сделали дефолтное поведение "сохранять отступы при чтении". 2. Кодирование перевода строки. При некоторых вариантах передачи по HTTP, Windows API начинал символ \n (стандарт Linux и Oracle) преобразовывать в \n\r. Понятное дело, что подпись документа (как бинарного файла) становилась не валидной. Долго понять не мог, почему XML проходит тест на сайте, а при обращении через API, нет. Приходилось пользоваться Windows API, т.к. авторизация на прокси была по последнему слову MS и ГОСТ техники. Кроме как через Windows API было не пробиться. Опять таки, проблему локализовал, но не помню, разбирался или нет. Продакшен сервер напрямую включен в защищенную сеть, т.ч. там проблемы с прокси нет. При передачи через https://hc.apache.org/ все работает как надо. AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 18:24 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38949971&tid=2125482]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 492ms |

| 0 / 0 |
