Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在AdobeAIR/BlazeDS中使用代理Web服务_Apache Flex_Air_Blazeds - Fatal编程技术网

Apache flex 在AdobeAIR/BlazeDS中使用代理Web服务

Apache flex 在AdobeAIR/BlazeDS中使用代理Web服务,apache-flex,air,blazeds,Apache Flex,Air,Blazeds,我正在尝试使用代理调用Web服务。我在blazeds端的代理配置设置如下: <destination id="ws-catalog"> <properties> <wsdl>http://feeds.adobe.com/webservices/mxna2.cfc?wsdl</wsdl> <soap>*</soap> </properties> <ada

我正在尝试使用代理调用Web服务。我在blazeds端的代理配置设置如下:

<destination id="ws-catalog">
    <properties>
        <wsdl>http://feeds.adobe.com/webservices/mxna2.cfc?wsdl</wsdl>
        <soap>*</soap>
    </properties>
    <adapter ref="soap-proxy"/>
</destination>
<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>
有人能帮我或给我指出一个类似的解决方案吗?
谢谢。

如果不知道所有配置,很难说。您可以查看以下几个原因:

<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>
-未能在services.xml中声明proxy-config.xml文件

<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>
-未能在项目中包括services.xml

<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>
-未能为目标声明频道

<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>

了解如何使用BlazeDS作为代理调用Web服务的最佳方法是下载并查看示例。解压缩存档后,您可以在BlazedRootFolder/tomcat/webapps/samples中找到samples文件夹。您将发现一个示例,显示您正在尝试执行的操作。

请检查下面的代码。它在我的机器上工作。您需要等待几秒钟,getFeeds将返回大量数据

<?xml version="1.0" encoding="utf-8"?>
<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>

<fx:Script>
    <![CDATA[
        import mx.messaging.ChannelSet;
        import mx.messaging.channels.AMFChannel;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.*;
        import mx.rpc.wsdl.WSDLOperation;
        [Bindable]
        private var cs:ChannelSet;
        [Bindable]
        var gateway:WebService

        private function loadConfiguration():void{
            var amfChannel:AMFChannel = new AMFChannel("my-amf", 'http://localhost:8400/samples/messagebroker/amf');
            cs = new ChannelSet();
            cs.addChannel(amfChannel);
            gateway = new WebService();
            gateway.channelSet = cs;
            gateway.destination = "ws-catalog";
            gateway.useProxy = true;
            gateway.addEventListener(ResultEvent.RESULT,ws_resultHandler);
            gateway.addEventListener(FaultEvent.FAULT,ws_faultHandler);
            gateway.loadWSDL();
        }

        protected function ws_resultHandler(event:ResultEvent):void{
            var obj:Object = event.result;
            trace("ok");
        }

        protected function ws_faultHandler(event:FaultEvent):void{
            var faultObj:Object = event.fault;
            trace("nok");
            trace(faultObj);
        }

        protected function button1_clickHandler(event:MouseEvent):void{
            gateway.getFeeds();
        }


    ]]>
</fx:Script>

<s:Button label="CallWebService" click="button1_clickHandler(event)"/>

当您使用BlazeDS作为Web服务的代理时,可能应该在Flex端使用RemoteObject而不是WebServiceAm不确定。。正如我所说,使用RemoteObject/Webservice的代理Web服务的任何指针都有助于理解。我尝试使用相同目的地的RemoteObjects,但最终得到的“HTTPProxy”服务只能处理“HTTPMessage”类型的消息。错误消息。我使用的是相同的blazeds交钥匙安装,我使用的ws-catalog目标是blazeds附带的目标。关于turnkey包的唯一一点是,没有一个示例描述使用客户端的代理配置用法。我已经把这个客户端代码放在这里了。如果需要对客户端进行任何修改,请告知。谢谢。当我在上面提到的脚本块中执行它时,它正在工作。但一旦我在mxml中指定了目的地,它就会以某种方式直接抛出错误。我在一些DI中使用欧芹,这可能是因为我的频道在应用程序创建完成后的稍后加载。无论如何,谢谢..我可以访问我的Web服务。