0

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

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

1 回答 1

0

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

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

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

mx.rpc.soap.mxml.WebServicemx.rpc.soap.WebService

于 2012-05-31T07:52:10.863 回答