所有
我试图明确地找出Flash / AS2与XML.sendAndLoad一起使用的方法(GET或POST)。
的说法将指定的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页面?)
有人能理解这个吗?非常感谢提前!
干杯, 马特
答案 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的消息体。