Adobe Flex 4.6具有相同Web Service对象的多个操作

时间:2012-05-31 02:52:48

标签: web-services flash flex

我的Flex应用程序中有WebService,支持多个操作。我正在尝试使用相同的webservice实例进行这些操作。但是一旦我使用不同的操作,我就会从服务器返回故障。在网络监视器中检查时,我看到SoapAction HTTP Header永远不会更新到第二个操作所需的那个。根据adobe文档,这应该是可能的,但似乎并不适合我。我的代码如下。如果有人能指出解决方案,那将会非常有帮助。

// main.mxml

public var ws:WebService;
public var op1:CallResponder = new CallResonder();
public var op2:CallResponder = new CallResonder();


// triggered on creationComplete Event
public function initWebsvc()
{
    ws = new WebService();
    ws.loadWsdl("http://www.examplesvc.com/test.asmx?wsdl");
}

protected function submit_ClickEventHandler(event:MouseEvent):void
{
    op1.addEventListener(ResultEvent.RESULT, op1_resultHandler);
    op1.token = ws.operation1();
}

protected function op1_resultHandler(event:ResultEvent):void
{
    op2.addEventListener(ResultEvent.RESULT, op2_resultHandler);
    op2.token = ws.operation2();  // This fails
}

protected function op2_resultHandler(event:ResultEvent):void
{
    Alert.show("SUCCESS");
}

1 个答案:

答案 0 :(得分:0)

我认为这是因为有两个WebService实现。一个在mx.rpc.soap中实现,另一个在mx.rpc.soap.mxml中实现。第二个不仅实现了IMXMLObject接口(在MXML中正确使用它),还提供了并发等附加功能(就像所有rpc服务一样)。

背后的想法是,在MXML定义的服务只是一个实例,它将被重用。你不能实例化更多的实例。在ActionScript中,您可能会创建大量实例。

因此,在ActionScript中使用Web服务时,请使用mx.rpc.soap.mxml实现并将并发属性设置为“multiple”。

mx.rpc.soap.mxml.WebService vs mx.rpc.soap.WebService