Web services Adobe Flex 4.6使用同一WebService对象执行多个操作

Web services Adobe Flex 4.6使用同一WebService对象执行多个操作,web-services,flash,apache-flex,Web Services,Flash,Apache Flex,我的flex应用程序中有支持多种操作的WebService。我正在尝试对这些操作使用相同的webservice实例。但是,一旦我使用不同的操作,服务器就会返回故障。在网络监视器中检查时,我看到SoapAction HTTP头从未更新为第二个操作所需的头。根据AdobeDocs,这应该是可能的,但似乎对我不起作用。我的代码如下。如果有人能指出解决办法,那将大有帮助 // main.mxml public var ws:WebService; public var op1:CallResponde

我的flex应用程序中有支持多种操作的WebService。我正在尝试对这些操作使用相同的webservice实例。但是,一旦我使用不同的操作,服务器就会返回故障。在网络监视器中检查时,我看到SoapAction HTTP头从未更新为第二个操作所需的头。根据AdobeDocs,这应该是可能的,但似乎对我不起作用。我的代码如下。如果有人能指出解决办法,那将大有帮助

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

我认为这是因为有两种WebService实现。一个在mx.rpc.soap中实现,另一个在mx.rpc.soap.mxml中实现。第二种方法不仅实现IMXMLObject接口(以便在MXML中正确使用它),而且还提供诸如并发性之类的附加功能(就像所有rpc服务一样)

其背后的思想是,在MXML中,定义的服务只是一个实例,可以重用。无法实例化更多实例。在ActionScript中,您可能会创建许多实例

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


vs

有趣的是,如果我将WebService声明为一个组件,而不是使用新的WebService()创建它,那么问题就会消失。有人知道为什么会有这种不同吗?非常感谢你的回复。我尝试了mx.rpc.soap.mxml.WebService,但问题仍然存在。我还注意到,如果使用mxml标记指定wsdl属性,并在ActionScript中使用loadWSDL()方法,也会发生同样的情况。这是并发属性被设置为“多个”的情况。