【问题标题】:AS2: Does xml.sendAndLoad use POST or GET?AS2:xml.sendAndLoad 使用 POST 还是 GET?
【发布时间】:2009-12-17 12:37:03
【问题描述】:

全部,

我试图明确地找出 Flash/AS2 对 XML.sendAndLoad 使用什么方法(GET 或 POST)。

以下是帮助/文档 (http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002340.html) 关于函数的说明

将指定的 XML 对象编码为 XML 文档,将其发送到 使用 POST 方法指定的 URL, 下载服务器的响应,并且 将其加载到 resultXMLobject 在参数中指定。

但是,我使用这种方法将 XML 数据发送到由另一个开发团队开发和维护的 Java Servlet。他们看到的日志条目如下所示:

GET /portal/delegate/[someService]?svc=setPayCheckInfo&XMLStr=[an encoded version of the XML I send]

在 Google 搜索以找出为什么 POST 在他们的日志中显示为 GET 后,我发现了这个 Adob​​e 技术说明 (http://kb2.adobe.com/cps/159/tn_15908.html)。它是这样说的:

当 loadVariables 或 getURL 操作被 用于向 Java servlet 发送数据 可以显示正在发送数据 使用 GET 请求,当 POST 方法在 Flash 中指定 电影。

发生这种情况是因为 Flash 发送 GET/POST 混合格式的数据。如果 正在使用 GET 发送数据 请求,变量将出现在 附加到末尾的查询字符串 网址。 Flash 使用 GET 服务器 请求,但名称/值对 包含变量的发送 使用 POST 进行第二次传输。 虽然这会导致 servlet 触发 doGet() 方法, 变量仍然可用 服务器请求。

我真的不明白。什么是“GET/POST 混合格式”?

为什么 Flash 使用的方法(POST 或 GET)取决于数据是发送到 Java servlet 还是其他地方(例如 PHP 页面?)

任何人都可以理解这一点吗?非常感谢!

干杯, 马特

【问题讨论】:

    标签: java flash actionscript servlets


    【解决方案1】:

    你有没有尝试做类似的事情:

    var sendVar=new LoadVars();
    var xml=new XML("<r>test</r>");
    sendVar.xml=xml;
    sendVar.svc="setPayCheckInfo";
    
    var receiveXML=new XML();
    function onLoad(success) {
        if (success) {
            trace("receive:"+receiveXML);
        } else {
            trace('error');
        }
    }
    receiveXML.onLoad=onLoad;
    sendVar.sendAndLoad("http://mywebserver", receiveXML, "POST");
    

    【讨论】:

      【解决方案2】:

      混合格式只是 Macromedia 发明的一个术语,用来描述其对 HTTP 的滥用。

      HTTP 对 GET 和 POST 可以做什么非常模糊。但约定是在 GET 中不使用消息体。 Adobe 在消息正文中发送参数违反了这一约定。

      无论服务器如何,Flash 都会发送相同的请求。您在 Servlet 中遇到问题,因为大多数实现(如 Tomcat)忽略了 GET 的消息正文。 PHP 不关心动词,它也为 GET 处理消息体。

      【讨论】:

      • “混合格式”其实很常见,我一直认为它是完全有效的。所以恐怕我不同意有一个约定。例如,带有查询参数和服务器表单的 .NET 页面在回发时也是如此。
      • (是的,我知道举一个使用 .NET 的标准示例具有讽刺意味。:))
      • 我敢打赌,您说的是 POST,而不是 GET。在 POST 中包含查询参数是很常见的。这仍然是一个 POST,没有什么混合的。
      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 2014-01-30
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多