【问题标题】:In AS3, how can you dynamically add operations to a WebService object?在 AS3 中,如何动态地向 WebService 对象添加操作?
【发布时间】:2013-01-04 14:28:22
【问题描述】:

假设您在 MXML 的 fx:Declarations 标记内定义了一个 WebService 对象,其中包含一些操作,以及这些操作的响应和故障处理程序。现在假设您想将该 WebService 传递给另一个对象的构造函数,然后该对象将在运行时向 WebService 添加一个操作,以及它自己的响应和该新操作的故障处理函数。

例如:

<fx:Declarations>
    <s:WebService id="ws" fault="Alert.show('failure')">
        <s:operation
            name="Op1"
            resultFormat="object"
            result="WebOp1(event);"
            fault="WebFaultOp1()"
        />
    </s:WebService>
</fx:Declarations>

.
.
.
        var a:A = new A(ws);

和:

public class A
{
    private var m_ws:WebService;

    public function A(pWS:WebService)
    {
        m_ws = pWS;
        m_ws.Op2 = new Operation();
        m_ws.Op2.resultFormat = "object";
        m_ws.Op2.result = WebOp2(event);
        m_ws.Op2.fault = WebFaultOp2(event);
    }

    private function WebOp2(pEvent:ResultEvent):void
    {
    }

    private function WebFaultOp2(pEvent:FaultEvent):void
    {
    }
}

如何做到这一点?如果必须,我愿意使用 MXML,但我在这里真正想要避免的是必须创建两个共享相同 WSDL 的单独 WebService 对象。谢谢!

【问题讨论】:

    标签: web-services actionscript-3 apache-flex actionscript mxml


    【解决方案1】:

    尝试这样做:

    var operation:Operation = new Operation(webService, 'noName'); // mx.rpc.soap.mxml.Operation
    operation.addEventListener(ResultEvent.RESULT, onResult);
    operation.addEventListener(FaultEvent.Fault, onFault);
    webService.operations['noName']=operation;
    

    【讨论】:

    • 它似乎大部分都在工作,但我从中得到了一个错误。 event.fault.faultString == [MessagingError message='必须将 MessageAgent 的目的地设置为发送消息。']。到目前为止,我只看到有关如何解决该问题的晦涩参考。
    猜你喜欢
    • 2011-02-25
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多