Comunidad de diseño web y desarrollo en internet online

Como parseo el resultado de WS en .net?

Citar            
MensajeEscrito el 12 Ago 2008 02:55 pm
Buenas, estoy teniendo un problemita con éso... estuve googleando pero no he podido hacer funcionar la aplicación con lo que encontré.
Mi WebService (C#) devuelve un DataTable:

Código :

return dsProductos.Tables[0];

Ya lo invoqué, funciona bien y toda la bola... el problema esta en Flex.
Invoco el WebService mediante AS:

Código :

      //J. Griguol
      private var webService : WebService = new WebService();

      private function loadWebService ( ) : void
      {
      // Cargar el WSDL y agregar listeners para saber cuando este listo
         webService.wsdl = "http://localhost:3332/net/Service.asmx?WSDL";
         webService.addEventListener(LoadEvent.LOAD, onWSDL);
         webService.addEventListener(FaultEvent.FAULT, onWebServiceFault);
         webService.loadWSDL( );
      }
      
      //listener que avisa cuando el WSDL se ha cargado

      private function onWSDL (event:LoadEvent ) : void
      {
      // Llamada a un metodo en el WebService, primero se crea otro listener para saber cuando
      // el resultado esta listo.
         webService.getDataTable.addEventListener(ResultEvent.RESULT, onGetDatosDePersona);
         webService.getDataTable();
      }
      
      private function onGetDatosDePersona (event:ResultEvent) : void
      {
      // Usar el resultado. Para mas detalles se puede inspecionar event.result en el debugger.
         firstName.text += String(event.result.apellido);
         
      }
      
      // En caso de que el WebService no puede ser cargado.
      private function onWebServiceFault(event:FaultEvent):void {
         var fault: Fault = event.fault;
         var message:String = "An error occurred. The details are as follows\ncode: " + fault.faultCode;
         message += "\ndetail: " + fault.faultDetail;
         trace("Web Service Error :" + message);
      }


En el textInput "firstName" me devuelve el valor "Undefined". Supongo que será necesario parsear el XML que obtengo... la pregunta es: Cómo hago? Probé el codigo de una web que encontré por ahi, pero no me funciono.
Estoy levantando un solo registro de la base de datos, por eso utilizo text inputs para mostrar los datos. Tengo entendido que para mostrar una colección completa por ejemplo en un GridView se hace algo asi:
//miDataGrid.dataProvider = ArrayCollection(event.result);

Saludos.

Jonathan

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 22 Ago 2008 06:36 pm
Hola jgriguol.
Fijate que podes definir el formato en que vas a recibir el webservice. La propiedad se llama resultFormat, y podria ser un Object, xml o e4x (dependiendo del objeto que devuelve tu ws es lo q te convenga). Siendo .NET/FLEX, en algunos casos puede servirte usarlo como object (opcion default), si lo q devuelve tu ws es un dataset por ejemplo, podrias usar object (en ese caso usan ambos el mismo standard/notación - no me acuerdo el nombre - y se 'entienden' barbaro).
Anda probando el resultFormat y traceando lo que obtenes en flex y te vas a dar cuenta, espero que sirva de algo...

Por selecters75

51 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 22 Ago 2008 06:42 pm
Gracias :) ya lo solucioné.. he probado varias formas, al final he optado por que el WS me devuelva un Array, luego lo manejo en {as}. El problema que tenía era que recibia un DataTable y vienve bárbaro para un DataGrid, porque como decis vos lo "entiende" a la perfeccion, pero no me servia para otro componente.

Muchas gracias.

Saludos

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 22 Ago 2008 07:07 pm
Me alegro que te haya servido :)
Dependiendo de la complejidad de tu proyecto, tambien podrias usar un asistente que tiene FLEX para crear un proxy a tu ws...

Por selecters75

51 de clabLevel



Genero:Masculino  

Argentina

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.