AS2:xml.sendAndLoad是否使用POST或GET?

时间:2009-12-17 12:37:03

标签: java flash actionscript servlets

所有

我试图明确地找出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]

在谷歌搜索找出POST为什么在他们的日志中显示为GET之后,我找到了这个Adobe技术说明(http://kb2.adobe.com/cps/159/tn_15908.html)。这就是它所说的:

  

当loadVariables或getURL操作时   用于将数据发送到Java servlet   可能会出现数据正在发送   POST时使用GET请求   方法是在Flash中指定的   电影。

     

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

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

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

有人能理解这个吗?非常感谢提前!

干杯, 马特

2 个答案:

答案 0 :(得分:2)

你有没有试过这样的事情:

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");

答案 1 :(得分:2)

混合格式只是Macromedia发明的一个术语,用于描绘滥用HTTP的过程。

对于使用GET和POST可以做什么,HTTP非常模糊。但是惯例是GET中没有使用消息体。 Adobe通过在邮件正文中发送参数来违反此约定。

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