【问题标题】:Flex, using navigateToURL to send an AMF object and open the response in a new windowFlex,使用 navigateToURL 发送 AMF 对象并在新窗口中打开响应
【发布时间】:2012-04-10 18:51:00
【问题描述】:

我有一个专门连接到 AMF 网关的应用程序(在某种模式下),我有一个服务可以呈现一些我想在 Flex 应用程序之外的新窗口中显示的 HTML。

是否可以在 Flex 中使用 navigateToURL 发送 AMF 对象并在新窗口中打开响应?

编辑:更具体地说,是否有人了解如何在 actionscript 中正确构建 AMF 请求并通过 URLRequest 的 POST 数据发送?

更新:仍在寻找 AMF 的明确规范,以明确如何在 AMF 中构造与服务调用相关的标头以及需要哪些标头。这方面的一些指导会有所帮助。我做了更多的阅读,并且看到一些人谈论他们拥有的一些自定义解决方案,这些解决方案的工作方式与我上面提到的类似,尽管这些解决方案似乎是受保护的资产。但这进一步强化了我的信念,即这是完全可能的。

【问题讨论】:

    标签: html apache-flex amf


    【解决方案1】:

    我会说不...即使您可以在 AS3 中手动创建 AMF 数据包,您将如何使用 navigateToURL 将其传递给 URL?浏览器如何知道如何处理从您的服务调用返回的 AMF 值?

    我建议您在 Flash 应用中调用 AMF 网关服务;做需要做的处理;然后返回结果的 URL。在结果处理程序方法中,您可以使用 navigateToURL 打开 URL。

    【讨论】:

    • 目标是不在服务器上存储结果。就浏览器从响应中解析 A​​MF 而言,这不是必需的,服务能够以 HTML 响应。我想这里最重要的是如何在 URLRequest 上设置传递给 navigateToURL 的数据。
    • 您使用的是什么服务器,它将为 AMF 请求提供 HTML/纯文本响应?
    • AMFPHP,你只需要在你的服务中回显和退出()! ;)
    • 还可以设置标题内容类型。
    • @ResistDesign 我们中的一个人误解了 AMF 网关的工作原理。我原以为如果您对服务器进行 AMF 调用,它将提供 AMF 二进制响应返回。如果您对服务器进行 HTTPService 调用,它将提供 HTTP 回调。您是说 AMF 调用正在返回一个文本/ASCII 值。这不是我理解它的工作方式。二进制格式对您来说可能是透明的,因为 Flash Player 在使用 RemoteObject 时会自动解码/编码 AMF 调用。
    【解决方案2】:

    @Flextras 是正确的——AMF 网关,特别是 AMFPHP,不与 URLRequest 一起使用,而是使用 RPC 远程处理——最常见的是 RemoteObject,您指定接收网关(即:端点或更一般地目标通道 - 但这个通道需要位于服务器上的服务配置中),并且您通常会分配一个响应者来处理结果/失败事件(其中您的响应几乎总是一个标记为 [RemoteAlias] 的类)。

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

    【讨论】:

    • 在 AMFPHP 中,当发出请求时会发生一系列动作。首先,RAW POST 数据从 AMF 解码为 PHP 对象。然后读取 AMF 标头以查看要调用的类/服务和方法。然后将该方法的返回值编码回 AMF 并添加到输出缓冲区。在调用 Class 方法时,您可以通过打印/回显您想要的任何内容来覆盖缓冲区,然后覆盖标题内容类型,然后调用 PHP exit() 方法来发送您的内容并结束执行会话,以便绕过 AMFPHP 的响应动作。
    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多