Comunidad de diseño web y desarrollo en internet online

Cómo consumir Web Services en flex 2 ?

Citar            
MensajeEscrito el 14 Jul 2006 03:01 am
Hola, soy nuevo en esto de flex, y he realizado varios ejemplos que he encontrado en videotutoriales, con éxito. Pero ahora necesito consumir un web service y no he encontrado nada, por supuesto que lo he intentado pero no resulta.

Agradecería alguna información, link o ejemplo.

De antemano gracias

Por Palitro

0 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 May 2007 03:15 pm
Hola, yo también soy nueva en flex y necesito saber como consumir webServices con flex encontré una información útil (http://www-128.ibm.com/developerworks/webservices/library/ws-macroflex/ ) si alguien sabe un poco mas seria muy útil … tengo que saber como llenar un data grid…
Muchas gracias
Carolina :oops:

Por nefertitisloves

0 de clabLevel



Genero:Femenino  

Argentina

firefox
Citar            
MensajeEscrito el 22 May 2007 08:12 pm
si usan subversion pueden descargar este ejemplo que hice:

svn://pbxa.com/test/flex/projects/httpTest

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

opera
Citar            
MensajeEscrito el 29 May 2007 02:57 pm
neohunter tu ejemplo es con httpservice, no con webservice, de todas maneras deberia ayudar a Caro, tendrias que decir bien cual es tu dificultad, si tu duda es como llenar el DataGrid con el resultado del webservice, tan solo debes
poner como dataProvider del datagrid la propiedad lastResult del metodo del webservice que quieres consumir.

dataProvider="{WS.GetEmployees.lastResult}"

WS es mi webservice
GetEmployees es el metodo que deseo llamar
lastResult la respuesta del webservice

Obviamente debes haber hecho un wsTest.Send() antes para haber hecho el pedido al WebService.
y tenes que tener obviamente listo el datagrid definiendo sus columnas para poder visualizar los datos.

Saludos

Por acromm

0 de clabLevel



 

BsAs Argentina

msie7
Citar            
MensajeEscrito el 20 Jun 2007 11:55 pm
hola:

He estado paseandome por los difrentes tutoriales que ofrecen sobre la creacion del consumo de web service en flex, pero nada mas no doy con la idea, he creado una pequeña aplicacion que consume un web service que he generado, agrego al fianl el codigo; al momeno de ejecutarlo me sale un alert con un error.

CODIGO:

Código :

<----------------------------------------------------------------------------------------------------------------------------------------------------->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:WebService id="loginWS" wsdl="http://localhost:4070/WebSite1/Service.asmx?wsdl"
  useProxy="false"  fault="wsFault(event)"  port="ServiceSoap">
 <mx:operation name="HelloWorld" result="HelloWorldResponse(event)">   
  </mx:operation>
 </mx:WebService>
 <mx:Script>
  <![CDATA[
  import mx.controls.Alert;
public function creationCompleteHandler():void
  {
     loginWS.HelloWorld.send();
     loginWS.valueOf();
  }
  public function HelloWorldResponse(result : Object):void
  {
      Alert.show("HelloWorldResponse");
  }
  public function wsFault(fault:Object):void
  {
      Alert.show(""+fault);
  }
  ]]>
 </mx:Script>
</mx:Application>
<-------------------------------------------------------------------------------------------------------------------------------->

y el error que me sale en el alert es el siguente:

<------------------------------------------------------------------------------------------------------------------------------------->
[FaultEventfault=[RPC Fault
faultString="Security error accessing url"
faultCode="Channel.Security.Error"
faultDetail="Unable to load WSDL. If currently
online, please verify the URI and/or format of
the WSDL
(http://localhost:4070/website1/Service.asmx
?wsdl)"] messageId=null type="fault"
bubbles=false cancelable=true eventPhase=2]
<--------------------------------------------------------------------------------------------------------------------------------------->
y pues he revisado que mi web service no lo este consumiendo nadie mas, ademas de la sintaxis y de la declaracion de los metodos, y pues nada, y ya andoa lgo perdida.

Agradeceria alguna ayuda o ligas donde pueda ver mas ejemplo sobre web services y Flex 2 (ya llevo varias dias metida en la red y nada).

Saludos

Por susana_torrence

1 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 20 Jun 2007 11:59 pm
agrego la seccion de mi web service:

<------------------------------------------------------------------------------------------------------------------------------>

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {
//Eliminar la marca de comentario de la línea siguiente si utiliza los componentes diseñados
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hola a todos";
}
}
<------------------------------------------------------------------------------------------------------------------------------->

Por susana_torrence

1 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 14 Ago 2007 05:56 am
Lo del security error creo que debe ser por donde ejecutas tu swf, si tienes tu web service en localhost, yo diria que debes compilar tu swf de flex en el mismo localhost y ejecutarlo desde allí.
En consecuencia supongo que los demas errores vienen de ahí. Supongo que desbes compilar elprograma desde el mismo flex y no lo tienes configurado para que se ejecute po localhost.
Eso, o lo subes a un servidor en la red y lo pruebas en tu dominio.
Te lo dice uno que no lleva mas de dos meses con el Flex, pero a mi me pasaba algo parecido y la cosa al final andaba por ahi.

Por chanofankero

17 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Ago 2007 09:22 pm
Hola, mi nombre es Jorge.

He leído todos sus comentarios, yo logre hacer webservices con php y ademas puedo ver otros webservices que poseen definicion (?wsdl).

Primero, para crear webservices con php yo utilice NuSOAP - SOAP Toolkit for PHP. Este archivo lo descargue y lo descomprimí en la raíz de mi sitio web, en este caso "F:\AppServ\www\nusoap". Dentro de la carpeta nusoap yo he creado una nueva carpeta para dejar mis archivos php, a esta carpeta le llame "mis_ejemplos".

Los siguientes codigos los he alojado en esta carpeta recién creada.

operacionesSW.php: Este archivo es el Webservice que posee funciones y es esta misma página la que será llamada en el WebService de Flex Bulider 2.

Código :

<?php

   require_once('../lib/nusoap.php');

   $ns="urn:Operaciones";
   $servidor=new soap_server();
   $servidor->configureWSDL('Operaciones', $ns);

   $servidor->register('hola', 
            array('nombre' => 'xsd:string'),
            array('return' => 'xsd:string'),
            $ns
            );

   $servidor->register('suma', 
            array('var1' => 'xsd:string', 'var2' => 'xsd:string'),
            array('return' => 'xsd:string'),
            $ns
            );

   $servidor->register('resta', 
            array('var1' => 'xsd:string', 'var2' => 'xsd:string'),
            array('return' => 'xsd:string'),
            $ns
            );

   $servidor->register('multiplicacion', 
            array('var1' => 'xsd:string', 'var2' => 'xsd:string'),
            array('return' => 'xsd:string'),
            $ns
            );

   $servidor->register('division', 
            array('var1' => 'xsd:string', 'var2' => 'xsd:string'),
            array('return' => 'xsd:string'),
            $ns
            );

   function hola($nombre){
      return "hola, " . $nombre;
   }

   function suma($var1,$var2){
      $resultado=$var1+$var2;
      return $resultado;
   }

   function resta($var1,$var2){
      $resultado=$var1-$var2;
      return $resultado;
   }

   function multiplicacion($var1,$var2){
      $resultado=$var1*$var2;
      return $resultado;
   }

   function division($var1,$var2){
      $resultado=$var1/$var2;
      return $resultado;
   }

   $HTTP_RAW_POST_DATA= isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
   $servidor->service($HTTP_RAW_POST_DATA);
?>


ejecutaOperaciones.php: Esta página consume el WebService creado más arriba.

Código :

<?php
   require_once('../lib/nusoap.php');

   $client = new soapclient('http://localhost/nusoap/mis_ejemplos/operacionesSW.php?wsdl', true);

   $result = $client->call('hola', array('nombre' => 'Elena'));
   $result .= "<br>";
   $result .= $client->call('suma', array('var1' => '4', 'var2' => '6'));
   $result .= "<br>";
   $result .= $client->call('resta', array('var1' => '4', 'var2' => '6'));
   $result .= "<br>";
   $result .= $client->call('multiplicacion', array('var1' => '4', 'var2' => '6'));
   $result .= "<br>";
   $result .= $client->call('division', array('var1' => '4', 'var2' => '6'));

   echo '<h2>Resultado</h2>';
   echo '<pre>' . print $result . '</pre>';
   echo '<h2>Requerimiento</h2>';
   echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
   echo '<h2>Respuesta</h2>';
   echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
?>


operaciones_nusoap.mxml: Finalmente llamaremos al archivo OperacionesSW.php dentro de Flex Builder de esta forma:

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <!-- Define the web service connection (the specified WSDL URL is not functional). -->
    
    <mx:Script>
       <![CDATA[
          
          private function ValidarNum2():void
          {
             if(txNumero2Dividir.text == '0')
             {
                mx.controls.Alert.show("No puede dividir por 0");
                resultadoDividir.text = "No se puedo realizar la división";
             }
             else
             {
                Operaciones.division.send();
             }
          }

       ]]>
    </mx:Script>

    <mx:WebService id="Operaciones"         
        wsdl="http://localhost/nusoap/mis_ejemplos/operacionesSW.php?wsdl" useProxy="false">
        <mx:operation name="suma">
            <mx:request>
                <var1>{txNumero1Suma.text}</var1>
                <var2>{txNumero2Suma.text}</var2>
            </mx:request>
        </mx:operation>
        <mx:operation name="resta">
            <mx:request>
                <var1>{txNumero1Resta.text}</var1>
                <var2>{txNumero2Resta.text}</var2>
            </mx:request>
        </mx:operation>
        <mx:operation name="multiplicacion">
            <mx:request>
                <var1>{txNumero1Multiplicar.text}</var1>
                <var2>{txNumero2Multiplicar.text}</var2>
            </mx:request>
        </mx:operation>
        <mx:operation name="division">
            <mx:request>
                <var1>{txNumero1Dividir.text}</var1>
                <var2>{txNumero2Dividir.text}</var2>
            </mx:request>
        </mx:operation>
    </mx:WebService>
    
    <mx:Panel title="Operaciones Matemáticas usando NuSOAP" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" >
        
       <mx:VBox id="box" width="470" verticalGap="0">
           <mx:TabBar id="tabBar" direction="horizontal" dataProvider="{viewStack}" width="100%" />
                    
            <mx:ViewStack id="viewStack" width="100%" height="100"
                   backgroundColor="white" borderSides="left bottom right" borderStyle="solid" borderThickness="1">
   
               <mx:Canvas id="child1" label="Sumar">
                   <mx:VBox>
                      <mx:HBox>
                         <mx:Label text="Nº1"/>
                         <mx:TextInput id="txNumero1Suma" width="200"/>
                      </mx:HBox>
                    <mx:HBox>
                       <mx:Label text="Nº2"/>
                       <mx:TextInput id="txNumero2Suma" width="200"/>
                       <mx:Button label="Sumar" click="Operaciones.suma.send()"/>
                    </mx:HBox>
           
                    <mx:Label text="Resultado:" fontWeight="bold"/>
                    <mx:Label id="resultadoSuma" text="{Operaciones.suma.lastResult}"/>    
                 </mx:VBox>    
               </mx:Canvas>
   
               <mx:Canvas id="child2" label="Restar">
                   <mx:VBox>
                      <mx:HBox>
                         <mx:Label text="Nº1"/>
                         <mx:TextInput id="txNumero1Resta" width="200"/>
                      </mx:HBox>
                    <mx:HBox>
                       <mx:Label text="Nº2"/>
                       <mx:TextInput id="txNumero2Resta" width="200"/>
                       <mx:Button label="Restar" click="Operaciones.resta.send()"/>
                    </mx:HBox>

                    <mx:Label text="Resultado:" fontWeight="bold"/>
                    <mx:Label id="resultadoRestar" text="{Operaciones.resta.lastResult}"/>     
                 </mx:VBox> 
               </mx:Canvas>
   
               <mx:Canvas id="child3" label="Multiplicar">
                   <mx:VBox>
                      <mx:HBox>
                         <mx:Label text="Nº1"/>
                         <mx:TextInput id="txNumero1Multiplicar" width="200"/>
                      </mx:HBox>
                    <mx:HBox>
                       <mx:Label text="Nº2"/>
                       <mx:TextInput id="txNumero2Multiplicar" width="200"/>
                       <mx:Button label="Multiplicar" click="Operaciones.multiplicacion.send()"/>
                    </mx:HBox>

                    <mx:Label text="Resultado:" fontWeight="bold"/>
                    <mx:Label id="resultadoMultiplicar" text="{Operaciones.multiplicacion.lastResult}"/>   
                 </mx:VBox> 
               </mx:Canvas>
               
               <mx:Canvas id="child4" label="Dividir">
                   <mx:VBox>
                      <mx:HBox>
                         <mx:Label text="Nº1"/>
                         <mx:TextInput id="txNumero1Dividir" width="200"/>
                      </mx:HBox>
                    <mx:HBox>
                       <mx:Label text="Nº2"/>
                       <mx:TextInput id="txNumero2Dividir" width="200"/>
                       <mx:Button label="Dividir" click="ValidarNum2()"/>
                    </mx:HBox>

                    <mx:Label text="Resultado:" fontWeight="bold"/>
                    <mx:Label id="resultadoDividir" text="{Operaciones.division.lastResult}"/>   
                 </mx:VBox> 
               </mx:Canvas>
         </mx:ViewStack>
       </mx:VBox>

    </mx:Panel>
     
</mx:Application>


Segundo, aqui hay un ejemplo para lo cual ya disponía la siguiente URL: http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
   creationComplete="wsBlogAggr.getMostPopularPosts.send()">
   
    <mx:WebService id="wsBlogAggr" 
        wsdl="http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl"
        useProxy="false">
        <mx:operation name="getMostPopularPosts">
            <mx:request>
                <daysBack>30</daysBack>
                <limit>{cbxNumPosts.value}</limit>
            </mx:request>
        </mx:operation>
    </mx:WebService>
    
    <mx:Panel x="10" y="10" width="475" height="400" layout="absolute"
        title="Most Popular Posts">

        <mx:ComboBox x="30" y="25" id="cbxNumPosts" change="wsBlogAggr.getMostPopularPosts.send()">
            <mx:Object label="Top 5" data="5" />
            <mx:Object label="Top 10" data="10" />
            <mx:Object label="Top 15" data="15" />
        </mx:ComboBox>
        
        <mx:DataGrid x="30" y="75" id="dgTopPosts" width="400" dataProvider="{wsBlogAggr.getMostPopularPosts.lastResult}">
            <mx:columns>
                <mx:DataGridColumn headerText="Top Posts" dataField="postTitle"/>
                <mx:DataGridColumn headerText="Clicks" dataField="clicks" width="75"/>
            </mx:columns>
        </mx:DataGrid>

        <mx:LinkButton x="30" y="250" 
            label="Select an item and click here for full post"/>
    </mx:Panel>
    
</mx:Application>


Espero que les sirva.
Atte.
Jorge Fuentes

Por jfuentes3002

1 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 23 Oct 2007 07:35 pm
Sr Jorge Fuentes.. es un maestro... muchas gracias..!! Saludos

Alvaro
Temuco-Chile

Por neodarklinux

2 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Oct 2007 07:36 pm
Sr Jorge Fuentes... ud es un maestro... Saludos

Alvaro

Por neodarklinux

2 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Oct 2007 08:55 pm
Sr Jorge Fuentes, muy buen documento, y ahora hago mis consultas, puesto que le he estado probando... y ahora tengo unas inquietudas, ojala sean respondidas.

Este es el Tag del WebService
----------------------------------------------------------------------------------------------------------------------------------------------------------------
<mx:WebService id="wsBlogAggr" wsdl="http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl"
useProxy="false">
<mx:operation name="getMostPopularPosts">
<mx:request>
<daysBack>30</daysBack>
<limit>{cbxNumPosts.value}</limit>
</mx:request>
</mx:operation>
</mx:WebService>
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Mi pregunta es, sera necesario declarar las operaciones en el Tag del WebService? se puede pueden dejar las operaciones fuera, asi como deje el wsdl?

Mi ejemplo y duda...

private function web_service():void{
this.WSOperaciones.wsdl ="http://localhost/webservice/operacionesSW.php?wsdl";
………………… como podrian ser las operaciones aca...
}
<mx:WebService id="wsBlogAggr" useProxy="false"/>


Me despido... y desde ya muchas gracias por la documentación. Saludos.

Alvaro

Por neodarklinux

2 de clabLevel



Genero:Masculino  

firefox

 

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