我有一个像这样定义的Flex服务:
<mx:operation name="postTableDetails" resultFormat="e4x" result="event.token.resultHandler(event);" fault="event.token.faultHandler(event);">
<mx:request>
<catalog></catalog>
<schema></schema>
<table></table>
<details></details>
无论如何,我基本上无法重置参数看起来更像:
<details create_time="x" table_type="x">
<column name="c1" datatype="INT" />
...
</details>
在我最终加载参数并调用服务的AS函数中,我正在做这样的事情:
var o:AbstractOperation = service.getOperation("postTableDetails");
o.arguments.catalog = catalog;
...
o.arguments.details = new XML(details);
如果我跟踪我的“details”var然后是o.arguments.details,那么两者都是我期望的有效XML。但实际的请求会将其截断为:
<details><column /></details>
我已经成功处理了简单的请求,我只是用一个字符串填充了一些类似于schema的东西,但是这个更复杂的请求现在让我感到难过。
答案 0 :(得分:0)
首先尝试将以下内容放入您的服务中
contentType="application/xml"
然后如果没有锻炼,那么最好还是
request="{details}"
试试看,知道。
答案 1 :(得分:0)
所以我最终使用Ravz的建议。我将服务定义更改为:
<mx:operation id="postTableDetails" name="postTableDetails" resultFormat="e4x" result="event.token.resultHandler(event);" fault="event.token.faultHandler(event);">
</mx:operation>
(添加了id并删除了请求。)然后在委托中,我将参数分配给:
service.postTableDetails.request = XMLList(
"<ns0:postTableDetails xmlns:ns0=\"http://nslinkfromwsdl/\">" +
"<catalog>"+cat+"</catalog>" +
"<schema>"+schema+"</schema>" +
"<table>" + table + "</table>" +
details +
"</ns0:postTableDetails>"
);
这使它正常工作。我不想在那里硬编码那个链接,但我可以在另一天找到它!