[Flex]如何用Httpservice和Webservice来和Flex进行通讯

友情提示:
由于Flex已经更新到3.0版本,所以本文所写的内容只对Flex1.5有效,在Flex1.5以上的版本中均不好使
关于Flex2.0及其以上的内容请看这里:http://www.k-zone.cn/zblog/catalog.asp?tags=Flex2&page=1

以前的内容:
1、关于httpservice的配置,flex可以通过httpservice和webservice的方式进行数据的传递,现在来配置httpservice。

下面这句话就可以进行httpservice的配置:

<mx:HTTPService id="indexService" url="jindex.jsp" resultFormat="xml" result="GetDetailsInfo()"  />

其中,id就是在这个mxml文件中使用的标示,我认为相当于对一个类的实例化,url就是通过httpservice调用的jsp文件的路径+文件名,一般同mxml放在同一个目录下面即可。ResultFormat是当调用了这个httpservice的时候返回的结果集,(注意:如果返回的结果集是进行数据绑定的话,一定要删除ResultFormat这个属性,否则不会显示绑定的内容,不过不需要绑定的话,一定要加上ResultFormat这个属性。否则也不能得到httpservice的结果,jsp文件返回的画面一定是xml的形式,应为flex只认xml格式的数据。)result就是调用httpservice后jsp形成xml文件,传递给flex,flex接受后的结果。通过httpservice返回的结果集以xml的方式存在,即可以用数组的形式取得。

var xmlNodes:Array = indexService.result.childNodes;这样数组xmlNodes存的就是xml的数据了!

2、现在配置webservice,flex通过webservice可以直接调用java文件中的方法,具体写法如下:

    <mx:WebService id="ws" serviceName="WaitForMomentWS">
        <mx:operation name="slowMethod" result="resultHandler(event)"/>
    </mx:WebService>

其中id还是这个webservice在这个mxml中的标示,serviceName会在一会讲解,slowMethod就是java文件中的具体的方法,result就是webservice返回的结果的方法

配置webservice需要配置F:\eclipse\workspace\FX-Blog\WebContent\WEB-INF\目录下面的server-config.wsdd和

F:\eclipse\workspace\FX-Blog\WebContent\WEB-INF\flex\下面的flex-config.xml这2个文件,首先配置server-config.wsdd,用ue打开后,增加如下代码:

<service name="WaitForMomentWS" provider="java:RPC">
  <parameter name="methodName" value="*"/>
  <parameter name="className" value="FXBlog.Others.WaitForMoment"/>
</service>

第一行的name就是上面的serviceName的名称,或者说这2个属性的名字要一直。

第三行的value的值就是这个java文件所在的package的名字加上自己的本身的名字

然后配置flex-config.xml,增加如下代码:

<service name="WaitForMomentWS">
    <wsdl>{context.root}/services/WaitForMomentWS?wsdl</wsdl>
    <endpoints>
       <endpoint>{context.root}/services/WaitForMomentWS</endpoint>
    </endpoints>
    <use-custom-authentication>true</use-custom-authentication>
</service>

其中所有行的路径名称必须同上2个代码中的名称一直,这样才能配置成功。按照上述的配置后,重新启动eclipse,就可以使用webservice了!