Apache flex 在AdobeAIR/BlazeDS中使用代理Web服务
我正在尝试使用代理调用Web服务。我在blazeds端的代理配置设置如下: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
<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服务。