Flex, используя navigateToURL для отправки объекта AMF и открытия ответа в новом окне.

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

Возможно ли в Flex использовать navigateToURL для отправки объекта AMF и открытия ответа в новом окне?

РЕДАКТИРОВАТЬ: В частности, есть ли у кого-нибудь представление о том, как запрос AMF может быть правильно построен в ActionScript и отправлен через данные POST URLRequest?

ОБНОВЛЕНИЕ: все еще ищем четкую спецификацию для AMF, которая делает очевидным, как создавать заголовки, связанные с вызовом службы, в AMF и какие заголовки требуются. Некоторые рекомендации в этой области были бы полезны. Я прочитал больше и видел, как некоторые люди рассказывают о некоторых имеющихся у них кастомных решениях, которые работают аналогично тому, что я упоминал выше, хотя кажется, что эти решения являются охраняемыми активами. Но это еще больше укрепляет мою веру в то, что это вполне возможно.


person Resist Design    schedule 10.04.2012    source источник


Ответы (2)


Я бы сказал нет ... Даже если бы вы могли создать пакет AMF вручную в AS3, как бы вы передали его по URL-адресу с помощью navigateToURL? Как браузер узнает, как обрабатывать значения AMF, возвращаемые вызовом службы?

Я предлагаю вам вызвать службу шлюза AMF в вашем приложении Flash; сделайте необходимую обработку; а затем верните URL-адрес результатов. В методе обработчика результатов вы можете открыть URL-адрес с помощью navigateToURL.

person JeffryHouser    schedule 10.04.2012
comment
Цель состоит в том, чтобы не сохранять результаты на сервере. Поскольку браузер анализирует AMF из ответа, в этом нет необходимости, служба может отвечать в HTML. Думаю, самое главное здесь - как настроить данные в URLRequest, который передается в navigateToURL. - person Resist Design; 11.04.2012
comment
Какой сервер вы используете, чтобы предоставлять ответ в формате HTML / Plain Text на запрос AMF? - person JeffryHouser; 11.04.2012
comment
AMFPHP, вам просто нужно echo и exit () в вашем сервисе! ;) - person Resist Design; 11.04.2012
comment
И, возможно, также установите тип содержимого заголовка. - person Resist Design; 11.04.2012
comment
@ResistDesign Один из нас ошибается, как работают шлюзы AMF. Я ожидал, что если вы сделаете вызов AMF на сервер, он предоставит ответный двоичный ответ AMF. Если вы сделаете вызов HTTPService на сервер, он предоставит ответный HTTP-вызов. вы говорите, что вызов AMF возвращает значение text / ASCII. Я так понимаю, что это работает не так. Двоичный формат может быть прозрачным для вас, поскольку Flash Player автоматически декодирует / кодирует вызовы AMF при использовании RemoteObject. - person JeffryHouser; 11.04.2012
comment
Нет, AMFPHP работает с выводом буфера PHP, который вы можете прерывать любым способом. То, что возвращает любой сервер, не обязательно должно зависеть от того, что он получает. - person Resist Design; 12.04.2012

@Flextras находится в правильном направлении - шлюз AMF, в частности с AMFPHP, не используется с URLRequest, вместо этого вы используете удаленное взаимодействие RPC - чаще всего RemoteObject, где вы указываете принимающий шлюз (то есть конечную точку или, в более общем смысле, целевой канал - но он должен быть в вашей конфигурации служб, которая находится на сервере), и вы обычно назначаете респондента для обработки событий результата / сбоя (в котором ваш ответ почти всегда представляет собой класс, помеченный как [RemoteAlias]).

См .: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/remoting/mxml/RemoteObject.html#includeExamplesSummary

person Mike Petty    schedule 11.04.2012
comment
В AMFPHP есть ряд действий, которые выполняются при отправке запроса. Сначала данные RAW POST декодируются из AMF в объекты PHP. Затем читаются заголовки AMF, чтобы узнать, какой класс / службу и метод вызвать. Возвращаемое значение этого метода затем кодируется обратно в AMF и добавляется в выходной буфер. В точке, где вызывается метод класса, вы можете переопределить буфер, распечатав / отобразив все, что хотите, затем переопределите тип содержимого заголовка и затем вызовите метод PHP exit () для отправки вашего содержимого и завершения сеанса выполнения, чтобы обходить ответные действия AMFPHP. - person Resist Design; 12.04.2012