flex 与.net WebService 的通信(原创)
flex 其实就是把要发送的数据通过 soap 的形式发送给服务器,至于你如何处理这些数据,不同的语言有不同的方法,曾经用过 java 的 aixs,比较陌生,在这里我用.net 的 web service 来处理,其实原理都是一样的,只是手段不同而已,随便说一下 flex 好像不能对 soap 的头信息进行修改,如果要对 soap 进行了解可以查看相关信息。
下面做一个简单的 demo,a+b=c 这样的形式,把 a 和 b 的数据发送到 web service 上,然后再回传到 flex,显示出来。
首先是 flex 的代码如下:(可以用项目来做,也可以单个文件通过 mxmlc 来编译)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:WebService wsdl="http://localhost/flexService/Service1.asmx?wsdl" showBusyCursor="true" id="ws">
<mx:operation name="HelloWorld" >
<mx:request xmlns="">
<a>{a.text}</a>
<b>{b.text}</b>
</mx:request>
</mx:operation>
</mx:WebService>
<mx:TextInput x="72" y="110" id="a"/>
<mx:TextInput x="72" y="170" id="b"/>
<mx:TextInput x="72" y="239" id="c" text="{ws.HelloWorld.lastResult}"/>
<mx:Button x="72" y="200" label="=" fontSize="12" click="ws.HelloWorld.send()"/>
<mx:Label x="72" y="140" text="+" fontSize="12" width="25" height="22"/>
</mx:Application>
再是net上的代码:(新建web service项目,把helloWorld改过来,偷懒-_-!)<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:WebService wsdl="http://localhost/flexService/Service1.asmx?wsdl" showBusyCursor="true" id="ws">
<mx:operation name="HelloWorld" >
<mx:request xmlns="">
<a>{a.text}</a>
<b>{b.text}</b>
</mx:request>
</mx:operation>
</mx:WebService>
<mx:TextInput x="72" y="110" id="a"/>
<mx:TextInput x="72" y="170" id="b"/>
<mx:TextInput x="72" y="239" id="c" text="{ws.HelloWorld.lastResult}"/>
<mx:Button x="72" y="200" label="=" fontSize="12" click="ws.HelloWorld.send()"/>
<mx:Label x="72" y="140" text="+" fontSize="12" width="25" height="22"/>
</mx:Application>
[WebMethod]
public int HelloWorld(int a,int b)
{
return a+b;
}
因为在flex里运用了绑定(binding)技术,不需要像在flash里考虑他是否已经把数据load下来,它在得到数据后会自动更新到组件上,减少了程序员的工作量。public int HelloWorld(int a,int b)
{
return a+b;
}
再一点是,web service可以返回一个类,它可以和flex里的类相匹配,很方便整体数据的传递。
接受数据的格式有多种,可以看我以前的文章,Flex 中获取 web service 返回值的多种方法