Flex与服务器端通讯方式(二)HTTPService方式

Flex与服务器端通信方式(二)HTTPService方式

 

HTTPService类用于超文本传输协议(HTTP)实现与服务器的通信。Flex应用程序用GETPOST请求将数据发送到服务端,并处理该请求所返回的XML或字符串。使用这个HTTPService类,可以与PHP页,ColdFusion页,JSP页,Java servletRuby 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;

 

 

Flex与服务器端通讯方式(二)HTTPService方式

2. 新建一个Flex项目,HTTPService

 

选择J2EE,并填写正确的地址,测试成功。

Flex与服务器端通讯方式(二)HTTPService方式

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改变就行。