![]() |
AS3 -> Java, writeObject
Приветствую.
Пытаюсь отправить объект на Java-сервер. Со стандартными типами работает нормально, но с классами начинаются проблемы. Класс сериализирован(и в Java, и в AS), клиент на Java успешно отправляет объект, сервер принимает. При отправке же объекта с Flash-клиента получаю на сервере ошибку: Код:
java.io.StreamCorruptedException: invalid stream header: 0A071744Код:
try |
Похоже они сериализованы разными способами.
|
кодировка?
|
2terbooter
Со связкой Java+Flash я первый раз имею дело, так что вполне возможно, что где-то у меня есть ошибка. Вот исходники: Flash: Код AS3:
Код AS3:
Код:
package FlashServer;2t4arty Насколько я понял мануалы, в Java кодировку можно указывать для BufferedReader, а он со строками рабоатет. |
Эмм... Actionscript записывает объекты в формате AMF, а java читает их по своим понятиям о сериализации... Разве это должно работать?
Я думаю, нужно либо писать свой формат и реализовать его и на сервере, и на клиенте, или прикрутить AMF к java - BlazeDS, например |
2gloomyBrain
C хелпа BlazeDS: Цитата:
|
Кодировки бывают только у текста, вам передается в любом случае бинарник. serialVersionUID у сериализованного файла по идее должен совпадать. Если бинов не много я бы не морочился и передавал все, как HashMap (если коллекции корректно работают).
|
Java сериализация - AMF сериализация
Нужен парсер, чтобы перегонять один формат в другой. Так ли вам важно маппить классы с помощью registerClassAlias? Может проще использовать свой формат? |
2Vier
Вот в этом багтреке: http://bugs.sun.com/bugdatabase/view...bug_id=4968673 описывается решение похожей проблемы, но там потоки работают через ByteArray, в одном и том же приложении. Причиной возникновения ошибки называют как раз несовпадение кодировок, если я верно понял. Да, и можно ли конкретнее, как работать с HashMap? 2terbooter Ну, в общем-то сервер-клиент у меня уже написаны, так сказать, одноразовая реализация, для конкретного проекта...а сейчас на эксперемнты потянуло, как прочитал о возможности подобной передачи объектов. Согласитесь, было бы удобно. |
Цитата:
String serialized = baos.toString(); byte[] b = serialized.getBytes(); Действительно может убить кодировку. Кодировка могла слететь только на конкретных полях, где пишется out.writeObject(Message); и читается Message = (String)in.readObject();. В общем, у вас скорее всего проблема с форматом сериализации. Просто сериализуйте класс в яве и во флеше и сравните байты ) Насчет HashMap'а вы сказали, что со стандартными типами все ок. Не очень понятно, что такое стандартные типы, возможно коллекции входят в них )) |
| Часовой пояс GMT +4, время: 19:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.