龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

Flex与WebServices进行数据交互实例(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
2.新建一个Flex项目 Code [http://www.xueit.com] ? 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:m

2.新建一个Flex项目

Code [http://www.xueit.com]
<?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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。


精彩图集

赞助商链接