Yii Framework Forum: Conectase A Web Service - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Conectase A Web Service Rate Topic: -----

#1 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 18 July 2013 - 02:27 PM

Saludos,

Antes que nada, soy un nuevo programador con 2 o 3 meses de experiencia pero me han mandado a hacer muchas cosas y el problema es que he trabjaado en plataformas diferentes.

Despues de la introducción les explicó mi duda ademas de decir que me gusta esto del Yii Framework.

He hecho esto anteriormente en javascript y phonegap pero no la razón por la cual no me esta funcionando aqui.

Estoy intentando conectarme a un Web Service en .NET que me devuelve resultados en JSON utilizando el metodo AJAX

<script type="text/javascript">
jQuery(function($) {
   	 $.ajax({
      	 type: 'get',
         url: "webservice.aspx",
         dataType: 'json',
         success: function(data) {
           //codigo
         });
         }
	}); 
</script>


Mi primera llamada es para activar la sesión y una vez activada debería permitirme ver los datos de la segunda llamada. Si pongo los enlaces en Orden en el navegador (primero el de la sesión y luego el de los datos) puedo ver mi resultado en JSON, pero al añadir el código en un VIEW de Yii Framework (cuando funcione creo un archivo js en assets), aunque la primera llamada me indica que la sesión fue activada, la segunda no me devuelve datos, en otras palabras no se mantiene la sesión que se crea en el web service.

Pregunto si hay alguna manera de llamar los métodos AJAX usando y poder leer los resultados usando funciones en un Controlador, para así no tener que usar javascript a menos que sea necesario. Leí sobre CHtml::ajaxLink y CHtml::ajax($options) pero necesito por lo menos utilizando ajaxLink no me funciona ya que necesito que los datos carguen al subir la página.

Gracias por su ayuda

-- EDIT --

Mi ambiente de trabajo es mi computador local, no he exportado la aplicación al servidor aún)
0

#2 User is offline   Andre Lopez 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 31-May 12

Posted 21 July 2013 - 01:29 AM

Hola,

Podría darte unos consejos, recuerda que los datos siempre tienen que pertenecer a un modelo o una clase, desde el controlador los puedes llamar así si necesitas hacer la llamada a este web service no estarías reescribiendo código podrías crear un clase en la carpeta models llamada WebServices y colocar esta función


    static function getDataArrayJson()
    {
        $url = "webservice.aspx";
        return CJSON::decode(file_get_contents($url));
    }



Y desde tu controlador llamar a tu clase webservices:

    $data=WebServices::getDataArrayJson();


Saludos espero te ayude.
0

#3 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 23 July 2013 - 01:32 PM

Wow... ¿Así de sencillo? Lo intentaré y te dejaré saber.

Por casualidad no sabes nada sobre la sesión porque sinceramente me esta muy raro ya que la sesión se mantiene mientras invoco el enlace desde el navegador pero no cuando la invoco desde una función ajax en javascript desde Yii Framework, aunque probablemente con ese codigo funcione.

Gracias por todo :-D
0

#4 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 24 July 2013 - 08:34 AM

Hola,

Logre imprimir los datos utilizando el siguiente código

foreach ($data as $key => $value) {
			echo $key . $value;
			# code...
		}


muchas gracias por tu ayuda, si hay mejores maneras de hacerlo pues lo agradeceria mucho. En realiadad quiero aprender más de Yii

-- Edit --
En realidad no funciona porque no se como enviar al view lo siguiente
$data=WebServices::getDataArrayJson();

0

#5 User is offline   Andre Lopez 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 31-May 12

Posted 24 July 2013 - 02:17 PM

View PostMoriPR, on 24 July 2013 - 08:34 AM, said:

Hola,

Logre imprimir los datos utilizando el siguiente código

foreach ($data as $key => $value) {
			echo $key . $value;
			# code...
		}


muchas gracias por tu ayuda, si hay mejores maneras de hacerlo pues lo agradeceria mucho. En realiadad quiero aprender más de Yii

-- Edit --
En realidad no funciona porque no se como enviar al view lo siguiente
$data=WebServices::getDataArrayJson();



Hola,

Me alegra que hayas avanzado, si lograste imprimir la variable $data solo la tienes que enviar a la vista con el metodo render en la misma acción de tu controlador:

               $this->render('vista',array('data'=>$data));


Luego en la vista la manipulas dentro de las etiquetas de php

            <?php

              foreach ($data as $key => $value) {
			echo $key . $value;
			# code...
		}
            ?>



Saludos.
0

#6 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 26 July 2013 - 09:20 AM

Muchas gracias Andre, he logrado mi cometido y ademas de pasar los últimos dos dias leyendo Yii debo hacer mi propio web service ya que como mencioné en mi primer post el web service no esta manteniendo la sessión que necesito para poder extraer datos.

Adicional a eso andaba desganado pero con tu ayuda y mi propio yii web service podre corregir la situación
0

#7 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 27 July 2013 - 08:22 PM

Debo dejarte saber que todo me ha funcionado y despues de 1 semana atascado en Yii, he progresado mucho. ahora a ver si en 3 dias hago una semana de trabajo... son solo 7 pantallas
0

#8 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 29 July 2013 - 08:01 AM

Hola nuevamente,

Tengo una interrogante y no logro conseguir respuesta y mis intentos han fallado,

1. Tengo una forma con un dropDownList que se llena con una llamada JSON. Este JSON lo generé con un web service creado en YII pero el mismo me devuelve la fila de la base de datos de la siguiente manera

EX:: -> {"0":{"dato":"valor"},"1":{"dato":"valor"}}

Esto hace que mi dropDownList active la propiedad del select optgroup haciendo que en las opciones de mi dropdown list aparescan de la siguiente manera

0
Valor
1
Valor
2
Valor

Intente desabilitar del optgroup utilizando un array('optgroup', array("label"->"disabled") pero no me funcionó y no logre eliminar el número de la fila del web service. ¿Cual es la forma correcta de por lo menos eliminar el optgroup del dropDownList?

Gracias por la ayuda
0

#9 User is offline   JFReyes 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 508
  • Joined: 28-October 09
  • Location:Puerto Rico

Posted 29 July 2013 - 03:28 PM

Saludos:

La mejor manera de suplir datos a un dropDownList es usando CHtml::listData. El listData a su vez se puede alimentar usando JSON.

(BTW, si eres de Puerto Rico envíame un PM, quizá podamos colaborar en el futuro) :)

Suerte,
José
0

#10 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 30 July 2013 - 09:57 AM

Funciono de maravilla


<?php echo $form->dropDownList($model,'variable del modelo', 
CHtml::listData(Modelo::model()->función en modelo que devuelve JSON,'id','valor'));



funcinó de la primera. Gracias y btw the envié un PM
0

#11 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 31 July 2013 - 08:28 AM

Hola nuevamente,

Estoy intentando enviar un email luego de que hago un CREATE pero luego de procesar los datos, me parece la pantalla de error con la siguiente respuesta
Expected response code 220 but got code "", with message "" 


No se si es porque estoy trabajando local en la maquina (no me pasó cuando trabaje con GRAILS ni con ASP.NET) o porque tengo mal la configuración. Estoy usando SWIFT MAILER y aqui les dejo el código. La idea de usar SWIFT MAILER es que me permite añadir un Attachment al correo.

//Create a new Transport object
Yii::import('ext.swiftMailer.SwiftMailer');
$host = 'smtp.gmail.com.';
$port = 465;
$SM = Yii::app()->swiftMailer;
$Transport = SwiftMailer::smtpTransport($host, $port)
->setUsername('email')
->setPassword('password');

$Mailer = $SM->mailer($Transport);
$Message = $SM
->newMessage('Se ha publicado su documento')
						        
->setFrom(array('email' => 'Example Name'))
->setTo(array('email' => 'Recipient Name'))
->setSubject('Your subject')
//->addPart($content, 'text/html')
->setBody('Hola, soy tu amigo Rodney');
 
    // Send mail
$result = $Mailer->send($Message);


Todo esta dentro de la funcion actionCreate()

Gracias por la ayuda nuevamente
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users