FLEX与.NET通信:WebService与RemoteObject连接地址的动态确定

  FLEX.NET通信可以采用WebServiceRemoteObject等方式,这两种方式都要指定.NET的通信地址,但因为软件发布后可能其端口或软件所在文件夹都有变化,往往要回flashbuilder中重新编译,这样很麻烦,下面分开说下怎样动态确定通信地址。

1. WebService方式

  这种方式不需要配置环境,只需在.NET端建立web服务文件,然后在FLEXWebService的定义处将wsdl设置为服务文件的地址,如下:

<s:WebService id="textService" wsdl="http://localhost:3231/FlexCode/WebService.asmx?wsdl">
  <s:operation name="HelloWorld" result="onResult(event)" fault="onFault(event)"></s:operation>
  <s:operation name="GetDataTable"></s:operation>
  <s:operation name="CodeContentList">
  </s:operation>
</s:WebService>

动态确定方式:

<s:WebService id="textService" wsdl="对应Flash页面的相对路径/WebService.asmx?wsdl">

2. RemoteObject方式

  这种方式可以使用第三方通信组件FluorineFx,安装好FluorineFx,在visualstudio中建立FluorineFx模板的解决方案和网站,编写处理FLEX请求的类库文件,这里假设文件名为Sample.cs

  FLEX端也不需要配环境,只需声明RemoteObject对象,指定destinationsource,以及endpoint,其中endpoint就是对应的通信地址,Gateway.aspx是入口页面,不具备实际意义,可以在配置过FluorineFx.net里的WEB-INF\flex文件夹下的services-config.xml中修改

<s:RemoteObject id="Service" destination="fluorine"  source="FlexDotnet.Sample" endpoint="http://localhost:3023/Web/Gateway.aspx">
   <s:method name="GetPro" result="onGetProResult(event)" fault="onFault(event)"></s:method>
   <s:method name="GetSample" result="onSampleResult(event)" fault="onFault(event)"></s:method>
</s:RemoteObject>

动态确定方式:

思路:在flex程序初始化时获取当前页面的url,取出需要的部分(如http://localhost:3023/Web/

假设flex程序的creationComplete方法为initApp()RemoteObjectid如上为Service,代码如下

import mx.managers.BrowserManager;
import mx.managers.IBrowserManager;
private function initApp():void{
    var browserManager:IBrowserManager = BrowserManager.getInstance();   
    browserManager.init();
    var url:String = browserManager.url.substring(0,url.lastIndexOf('/'));
    Service.endpoint=url.substring(0,url.lastIndexOf('/'))+"/Gateway.aspx"; 
}

RemoteObject组件中就不用写endpoint

如此就不必每次端口号或者网站名称改变的时候重新进行编译了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值