Flex与服务器端通讯方式(二)HTTPService方式
Flex与服务器端通信方式(二)HTTPService方式
HTTPService类用于超文本传输协议(HTTP)实现与服务器的通信。Flex应用程序用GET或POST请求将数据发送到服务端,并处理该请求所返回的XML或字符串。使用这个HTTPService类,可以与PHP页,ColdFusion页,JSP页,Java servlet,Ruby on Rails,以及Microsoft ASP页进行通信。
1.使用HTTPService进行通信,要创建并配置一个HTTPService组件,使应用程序能够与基于HTTP协议的服务进行通信。
HTTPService对象的创建与配置:
<mx:HTTPService url=" " id=" " fault=" " result=" " method=" " showBusyCursor=" " useProxy=" ">
2.要把参数传到后台,可以通过两种方法:一个是通过配置HTTPService对象的request属性
如:
<mx:request xmlns=""> <username>{input.text}</username> </mx:request>
另一个方法是在url后面加参
如:
<mx:HTTPService url=http://localhost:8080/Test/index.jsp?id=1/>
下面使用一个例子来说明HTTPService与后台进行通信
1. 新建一个web 项目,Test,并将其布暑入Tomcat;
2. 新建一个Flex项目,HTTPService
选择J2EE,并填写正确的地址,测试成功。
3.客户端代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns="*"> <mx:HTTPService url="http://localhost:8080/Test/index.jsp?id=1" id="service" fault="serviceFault(event)" result="serviceResult(event)" method="POST" showBusyCursor="true" useProxy="false"> <mx:request xmlns=""> <username>{input.text}</username> </mx:request> </mx:HTTPService> <mx:Script> <![CDATA[ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.controls.Alert; [Bindable] private var requestedId:Number;//要向服务器端传输的数据 //输出服务返回的结果 private function serviceResult(event:Event):void{ Alert.show(service.lastResult.users.user.name); } //服务器发生故障或超时的事件处理 private function serviceFault(event:Event):void{ Alert.show("服务发生故障:"+event.toString()); } private function callService():void{ //requestedId = input.text as Number; //Alert.show(input.text); service.send(); } ]]> </mx:Script> <mx:TextInput id="input"/> <mx:Button label="get user name" click="callService()" y="50"/> <mx:DataGrid y="100" width="163" dataProvider="{service.lastResult.users.user}"> <mx:columns> <mx:DataGridColumn headerText="姓名:" dataField="name"/> <mx:DataGridColumn headerText="年龄" dataField="age"/> </mx:columns> </mx:DataGrid> </mx:Application>
4.服务器端代码:(这里就用JSP)
<%@ page contentType="text/xml,charset=utf-8"%> <% request.setCharacterEncoding("utf-8"); String id = request.getParameter("id"); String username = request.getParameter("username"); System.out.println(username); System.out.println(id); out.print("<?xml version='1.0' encoding='utf-8'?><users><user><id>"+id+"</id><name>nishiting</name><age>23</age></user></users>"); %>
如果是写在servlet里:
response.setContentType("text/html"); PrintWriter out = response.getWriter(); //request.setCharacterEncoding("utf-8"); String id = request.getParameter("id"); String username = request.getParameter("username"); System.out.println(username); System.out.println(id); out.print("<?xml version='1.0' encoding='utf-8'?><users><user><id>"+id+"</id><name>nishiting</name><age>23</age></user></users>");
这时客端的请求要指向servlet,即
<mx:HTTPService id="requestServlet" url="./requestServletDemo" useProxy="false" method="POST" showBusyCursor="true">
使用struts也一样,把url改变就行。