Adobe Flex (HttpService) enviando parametros para a aplicação web em Java

segunda-feira, 26/10/2009 9:43 pm  

Mais um antigo, um exemplo de como enviar um “objeto” via mx:HTTPService, para uma action de framework java como por exemplo, Mentawai, Struts 2…


eis um grande problema quando estamos utilizando o Adobe Flex, como enviar de modo que funcione parametros para nossa aplicação java, segue uma dica de como fazer para enviar os parametro de forma que funcione para aplicações que utilizam o Struts 2 ou o Mentawai na aplicação que roda no servidor (pelo menos nos testes que eu fiz funcionou…)

?View Code ACTIONSCRIPT3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<mx:application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:script>
	<!--[CDATA[
	import mx.controls.Alert;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.events.FaultEvent;
	import mx.utils.ObjectUtil;
	import mx.rpc.http.HTTPService;
 
	public function getLoginParameters():Object {
		return {
			"user.login": loginField.text,
			"user.password" : passwordField.text
		};
	}
 
	public function enviarDados(): void {
		userRequest.send( this.getLoginParameters() );
	}
 
	public function onSuccess(event:ResultEvent):void {
		Alert.show( XML(event.result) );
		//cria String baseado no resultado
		var rawData:String = String(event.result);
		Alert.show( rawData );
	}
 
	public function onError(event:FaultEvent):void {
		Alert.show(ObjectUtil.toString(event.fault));
	}
	]]-->
	</mx:script>
 
	<mx:httpservice id="userRequest">
		url="http://localhost:8080/mentawai_teste/FlexAction.loginXML.mtw"
		result="onSuccess(event)"
		fault="onError(event)"
		resultFormat="e4x"
		method="POST"/>
 
	<mx:panel width="300" height="154" layout="absolute" horizontalcenter="0" verticalcenter="11" title="Login">
		<mx:form width="100%" height="100" x="0" y="0">
			<mx:formitem label="Login"><mx:textinput id="loginField"/></mx:formitem>
			<mx:formitem label="Password"><mx:textinput id="passwordField"/></mx:formitem>
		</mx:form>
		<mx:button y="84" label="OK" horizontalcenter="0" id="sendBtn" click="enviarDados()">
		<mx:label x="10" y="96" text="{loginField.text}" enabled="false"/>
		<mx:label x="174" y="96" text="?" enabled="false"/>
	</mx:panel>
</mx:application>


Observe: a function getLoginParameters():Object, aqui está a questão, o formato que finalmente funcionou para envio dos parametros de forma que chegassem corretamente no servidor, sem nenhum erro inesperado… onde a comunicação com o servidor é efetuada através do componente : mx:HTTPService, sendo que neste caso utilizei retorno em XML como resultado da execução da action.


Quanto a aplicação em java eu tenho na minha classe action o respectivo atributo setado na classe:

private UserBean user;


Onde a estrutura dessa classe é:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class UserBean {
	private String login;
	private String password;
 
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}


Bom fica ae a dica para conseguir enviar parametros do Flex para sua aplicação em java. o/

, , , , , ,

Este post foi escrito por:

- que escreveu 500 post(s).


Entre em contato

  • http://www.estilofacil.com Anderson

    Então rapaz.. pelo que eu percebi basta usar o método send() do httpservice e passar como parametro um objeto, contendo propriedades que eu quero enviar…
    Eu tentei fazer isso, porém pra enviar pra uma aplicação php via POST, como se fosse um formulário html comum. porém os dados nao foram enviados…
    =S

    • http://intensedebate.com/people/erko erko

      eita que estranho…

      sempre que eu testei via post eu mandava assim…
      bom se bem que com PHP é tranquilo vc jogar o AMFPHP no projeto e facilitar o meio de campo enviando via AMF o objeto =D