<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.AbstractOperation;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
//定义一个WebService
private var ws:WebService;
//定义一个抽象操作
private var oper:AbstractOperation;
//初始货WebServices
public function InitWebServices()
{
ws=new WebService();
ws.wsdl="http://192.168.2.8:80/DemoDataForFlex.asmx?wsdl";
ws.loadWSDL();
}
//调用无法方法
protected function btnCallNoParam_clickHandler(event:MouseEvent):void
{
//初始货WebServices
if(ws==null)
{
InitWebServices();
}
oper=ws.getOperation("SimpleTest");
oper.addEventListener(FaultEvent.FAULT,OnFault);
oper.addEventListener(ResultEvent.RESULT,OnResult);
oper.send();
}
//失败结果
private function OnFault(event:FaultEvent):void
{
mx.controls.Alert.show(event.message.toString(),"失败了");
}
//成功结果
private function OnResult(event:ResultEvent):void{
mx.controls.Alert.show(event.result.toString(),"成功啦!");
}
//调用带参方法
protected function btnCallByParam_clickHandler(event:MouseEvent):void
{
//初始货WebServices
if(ws==null)
{
InitWebServices();
}
oper=ws.getOperation("HaveParamMethod");
oper.addEventListener(FaultEvent.FAULT,OnFault);
oper.addEventListener(ResultEvent.RESULT,OnResult);
oper.send(this.txtParam.text);//添加参数
}
//调用XML数据
protected function btnCallXml_clickHandler(event:MouseEvent):void
{
//初始货WebServices
if(ws==null)
{
InitWebServices();
}
oper=ws.getOperation("ReturnXmlDocumentData");//服务器方法名
oper.addEventListener(FaultEvent.FAULT,OnFault);//调用失败
oper.addEventListener(ResultEvent.RESULT,OnXMLDocumentResult);//调用成功
oper.send();
}
//处理服务器反回XMLDocument的结果
private function OnXMLDocumentResult(event:ResultEvent):void
{
dgData.dataProvider=oper.lastResult.NewDataSet.Table1;
}
//调用返回XML字符串的主法
protected function btnStringXml_clickHandler(event:MouseEvent):void
{
//初始货WebServices
if(ws==null)
{
InitWebServices();
}
oper=ws.getOperation("ReutrnStringXmlData");//服务端方法名
oper.addEventListener(FaultEvent.FAULT,OnFault);//调用失败回调
oper.addEventListener(ResultEvent.RESULT, OnStringXMLResult);//调用成功回调
oper.send();
}
//处理服务器返回字符串的XML结果
private function OnStringXMLResult(event:ResultEvent):void
{
//处理 字符串的返回结果
var xml:XML=new XML(oper.lastResult.toString());
dgData.dataProvider=xml.children();
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:HBox width="100%" height="30" top="10" paddingLeft="10">
<s:Button label="调无参函数" id="btnCallNoParam" click="btnCallNoParam_clickHandler(event)"/>
<s:Label text="参数输入"/>
<s:TextInput x="197" y="20" id="txtParam"/>
<s:Button label="调带参函数" id="btnCallByParam" click="btnCallByParam_clickHandler(event)"/>
</mx:HBox>
<s:Panel x="6" y="88" width="426" height="247" id="pnlXml" title="返回的XML结果">
<mx:DataGrid x="0" y="0" height="100%" width="100%" id="dgData">
<mx:columns>
<mx:DataGridColumn headerText="姓名" dataField="Name"/>
<mx:DataGridColumn headerText="性别" dataField="Sex"/>
<mx:DataGridColumn headerText="年龄" dataField="Age"/>
<mx:DataGridColumn dataField="Address" headerText="所在地"/>
</mx:columns>
</mx:DataGrid>
</s:Panel>
<s:Button x="10" y="59" label="服务端返回XMLDocument" id="btnCallXml" click="btnCallXml_clickHandler(event)"/>
<s:Button x="232" y="60" label="服务端返回String的XML串" id="btnStringXml" click="btnStringXml_clickHandler(event)"/>
</s:Application>
测试通过,全部代码都贴上来了

作者:Louja
出处:http://loujady.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。