Изменение ответа AMF во время выполнения - Как? - PullRequest
0 голосов
/ 02 декабря 2009

Я создал простое Flex-приложение (использующее BlazeDS), которое отображает детали «Person», вызывая java-сервис с использованием flex remoting. Итак, мой класс Person выглядит примерно так:

class Person {
public int age;
public String name;
}

Как Java-разработчик, вот мое понимание: Когда я запускаю приложение front flex в моем веб-приложении, выполняется вызов RPC, и BlazeDS выполняет тяжелую работу по вызову правильного метода, получению результата в виде объекта, преобразованию объекта в формат AMF (сериализация). И затем сервер веб / приложений отправляет этот ответ запрашивающему приложению через http. Приложение flex теперь выполняет задачу десериализации объекта, полученного в формате AMF, и каким-то образом его использует.

Вот мой вопрос: Я хотел бы изменить ответ до того, как он достигнет приложения Flex, изменив атрибуты объекта person. У меня есть фильтр для этого. Тем не менее, я не уверен, как я могу десериализовать поток AMF, модифицировать объект, сериализовать объект обратно в поток / каким-то образом реконструировать поток.

Есть ли способ сделать это? С чего мне начать?

PS Если вопрос был слишком запутанным, вот более короткая версия: Как изменить поток ответов типа содержимого AMF-X, прежде чем он достигнет приложения Flex с использованием фильтра Java?

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Самостоятельно сериализовать и десериализовать AMF будет непросто, поэтому определенно избегайте этого. Лучший подход - преобразовать данные в нужный формат в вашем внутреннем коде. Из Flex вызовите метод службы на внутреннем сервере, который затем извлекает данные и преобразует их в правильную структуру объекта перед отправкой обратно во Flex.

0 голосов
/ 02 декабря 2009

Ну, это не совсем то, что вы хотите, но если вам нужно лишь время от времени что-то менять во время тестирования, есть решение. Charles Proxy (http://www.charlesproxy.com/) позволяет вам изменять возвращаемые данные «вручную». Это инструмент, который я ежедневно использую для мониторинга трафика AMF, поскольку он отлично справляется с десериализацией и отображением в удобочитаемом формате. бесплатную версию вы можете попробовать.

Краткая инструкция по редактированию данных:

0) Установите Charles (включая плагин firefox, если вы его используете)

1) Выберите Прокси-> Точки останова в главном меню.

2) Заполните хост (вы можете сделать это с помощью подстановочных знаков - например, mydomain.com *)

3) Установите флажок «Ответ»

4) Позвонить на сервер

5) Точка останова должна срабатывать при возврате данных. Теперь просто найдите вкладку «Редактировать ответ», выберите «AMF» внизу, и вы сможете редактировать все, что захотите.

Надеюсь, это поможет

0 голосов
/ 02 декабря 2009

Для дальнейшего ответа Джеймса используйте что-то вроде пружины, чтобы перехватить ответ на вызов и помешать ему (опять же, до того, как он будет сериализован).

В основном вам придется переопределить процесс (де) сериализации, и это не просто.

...