加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex+webservice

发布时间:2020-12-15 01:02:03 所属栏目:百科 来源:网络整理
导读:?import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.utils.ArrayUtil; public function getInfo() ?{ var service:WebService = new WebService(); ? servi
?import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

import mx.utils.ArrayUtil;

public function getInfo()
?{
var service:WebService = new WebService();
? service.loadWSDL (ustc.Const.WebUrl);
?service.addEventListener (ResultEvent.RESULT,onLoad);//载入数据的处理
service.addEventListener(FaultEvent.FAULT,faultHandler);//错误处理
service.getMENU();?
?}

private function onLoad(event:ResultEvent):void{?
// Alert.show(event.result.toString(),"WebService Results");?
var weatherInfo:ArrayCollection = (event.result) as ArrayCollection;?
for(var i:int=0;i<weatherInfo.length;i++){?
myWeatherReport.text+=weatherInfo[i]+"n";?
}?
?
}?
private function faultHandler(event:FaultEvent):void{?
Alert.show(event.fault.toString(),"WebService Error");?
}?

(1)字符串类型:

? //得到水库列表
??? [WebMethod]
??? public string getsklist(string city)
??? {
??????? USTC.DM.sw_app app = new USTC.DM.sw_app();
??????? DataSet ds = app.getsql("select name,SKID,y,x,工程规模 from 水库工程 where 所属地区 like '" + city + "%'");
??????? StringBuilder sb = new StringBuilder();
??????? for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
??????? {
??????????? sb.Append(ds.Tables[0].Rows[i][0].ToString() + ",");
??????????? sb.Append(ds.Tables[0].Rows[i][1].ToString() + ",");
??????????? sb.Append(ds.Tables[0].Rows[i][2].ToString() + ",");
??????????? sb.Append(ds.Tables[0].Rows[i][3].ToString() + ",");
??????????? sb.Append(ds.Tables[0].Rows[i][4].ToString());
??????????? if (i < ds.Tables[0].Rows.Count - 1) sb.Append(";");
??????? }
??????? return sb.ToString();
??? }

private function onLoad(event:ResultEvent):void{?
?? var doc:String? =?? event.result.toString() ;

var array:Array=doc.split(";");//item.source.toString().split(re);?

for(var i:int=0;i<array.length;i++){?
addNode(array[i]);
?}
?? label.text+=doc+"n";?
?}

(2)XMLstring数据类型:

???? [WebMethod]
???? public string ListEmployees()//获取所有雇员返回相关的XML格式字符串
???? {
???????? return
"<Employees>"??? + "<Item>"
???????? + " <EmployeeID>1</EmployeeID>"
?????? + "?? <EmployeeName>NancyDavolio</EmployeeName>"
??????? + "? <Title>Sales Representative</Title>"
????? + "</Item>"
????? + "<Item>"
?????? + "?? <EmployeeID>2</EmployeeID>"
???????? + " <EmployeeName>AndrewFuller</EmployeeName>"
???????? + " <Title>Vice President,Sales</Title>"
???? + " </Item>"
? + "</Employees>";
}

?

?private function onLoad(event:ResultEvent):void{
??var doc:XMLDocument = new XMLDocument(event.result.toString());?
??var obj:XML;??
??var employees:ArrayList = new ArrayList();??
??for(var i:int=0;i<doc.firstChild.childNodes.length;i++)??
??{??
???obj = new XML(doc.firstChild.childNodes[i].toString());//创建一个XML对象,直接支持对象属性访问。??
???label.text += obj.EmployeeName+'n';
???employees.addItem(obj);??
??}
??employeeList.dataProvider=employees;//把数据源绑定到列表中?
?}

//表现层
?<s:DataGrid id="employeeList" width="473" height="107" requestedRowCount="4"
?? ?? skinClass="spark.skins.wireframe.DataGridSkin">
??? <s:columns>
???? <s:ArrayList>
????? <s:GridColumn dataField="EmployeeID" headerText="ID"></s:GridColumn>
????? <s:GridColumn dataField="EmployeeName" headerText="EmployeeName"></s:GridColumn>
???? </s:ArrayList>
??? </s:columns>
?? </s:DataGrid>

?(3)对象数据绑定

同上,可以直接绑定

?private function onLoad(event:ResultEvent):void{
??var employees:ArrayCollection = event.result as ArrayCollection;
??employeeList.dataProvider=employees;//把数据源绑定到列表中?

?}

?(4)database数据绑定(不推荐,这样webservice无法在其他终端调用)

?[WebMethod]
??? public DataTable getswyj()
??? {
??????? USTC.DM.sw_app app = new USTC.DM.sw_app();
??????? System.Data.DataSet ds = app.getsql("select *? from 水位预警? where 发布时间>'" + System.DateTime.Now.ToShortDateString() + "' order by 发布时间 desc"); //yj.getswyj();
??????? // dt.TableName = "雨量预警";
??????? return ds.Tables[0];
??? }

private function onLoad(event:ResultEvent):void{
??? var employees:ArrayCollection =event.result.diffgram.NewDataSet.Employ as ArrayCollection;
??
??employeeList.dataProvider=// event.result.diffgram.NewDataSet.Employ.Rows;
???//event.result.diffgram.NewDataSet.Table.Rows;//把数据源绑定到列表中?
? employees;//
?}

?

?(5)在数据/服务引入http://192.168.0.161:8080/bzmis/webservice/getdata.asmx?wsdl

??

这是比较推荐的一种做法,因为可以实现异步调用:

private var weather:services.getdata.Getdata= new Getdata();

?weather.addEventListener(ResultEvent.RESULT,onLoad);
? var token:AsyncToken=weather.getMENU();//.addEventListener(ResultEvent.RESULT,onLoad);
? token.ddEventListeneraddEventListener(ResultEvent.RESULT,onLoad);

现在就有了一个变量"token",代表这个单独的调用。像这样,你可以分配token自己的result和fault处理函数
token.addResponder(myResponderClass);
???? 这里myResponderClass类实现了IResponder.实现Iresponder简单的意味着定义了如下两个方法签名:
??? * public function result(data:Object):void
??? * public function fault(info:Object):void
????? 因此你可以对你的远程调用在调用时设置result和fault处理函数,而不用把硬编码放到你的远程对象,HTTPService或者WebService标签里。这也恰好就是Cairngorm和其他微体系结构的运行方式。应该就是对不用用户的请求结果做不同的处理!??
?????? AsyncToken最后一点很酷的特性就是它是动态类。这意味着,当你进行远程调用时可以添加属性到token上,然后result/fault处理函数中读取这些属性。

?

(6)XMLLIST与Tree绑定:

java端服务:???

while(rs.next())?
???{
??????? int id = rs.getInt("ID");
??????????? String? name= rs.getString("UNITNAME");
??????????? String? url=rs.getString("SERVERIP");
??????????? res.append("<node label=""+name+"" data=""+url+"">");
??????? ? SQL="select * from INTERROGATE.ROOM WHERE UNITID='"+id+"' order by ID";
?????? ?
????? ResultSet rsroom=pb.selectRecord(SQL);
????? while(rsroom.next())?
??????{
?????? String roomname=rsroom.getString("NAME");
?????? String resid=rsroom.getString("RESID");
?????? res.append("<node label=""+roomname+"" data=""+resid+"" />");
??????}
??????????? res.append("</node>");???????
???}
???? res.append("</menus>");

形成类似以下XML:

<?xml version="1.0" encoding="UTF-8"?><menus><node label="瑶海区" data="null"></node><node label="庐阳区" data="null"></node><node label="蜀山区" data="null"></node><node label="包河区" data="null"></node><node label="长丰县" data="null"></node><node label="肥东县" data="null"><node label="xxx" data="null" /></node><node label="肥西县" data="19991010"></node></menus>

客户端调用:

var tree:mx.controls.Tree= new mx.controls.Tree(); ????? var menus:XML=new XML(); ????? menus=XML(doc) ; ????? ????? var results:XMLList=menus.node; ????? tree.dataProvider= results; ???? ?????tree.height=200; ?????tree.labelField="@label"; ?????tree.addEventListener(MouseEvent.CLICK,handleUrl); ???????vbox.addElement(tree);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读