Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Problema con uso de CURL

Estas en el tema de Problema con uso de CURL en el foro de PHP en Foros del Web. Buenas tardes Estoy desarrollando un script, en el cual al momento de ingresar un nuevo usuario en una plataforma, se ingrese los datos de este ...
  #1 (permalink)  
Antiguo 10/12/2014, 17:08
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Pregunta Problema con uso de CURL

Buenas tardes


Estoy desarrollando un script, en el cual al momento de ingresar un nuevo usuario en una plataforma, se ingrese los datos de este mismo usuario en otra plataforma distinta.

Para este efecto uso el siguiente código:

Código PHP:
<html>
<head>
    <title>Uso de API de ProcessMaker</title>

    <meta charset="UTF-8">
    <?php include "NuevoCaso.php"?>
</head>
<body>

    <?php

     $user 
'*****';
     
//$pass = '*******';
     
$pass '********';

     
ini_set("soap.wsdl_cache_enabled""0");
     
$cliente = new SoapClient("http://p***************o:80/sysPQRS/es/classic/services/wsdl2");     
     
     
$parametros = array(array('userid'=>$user'password'=>$pass));

     
$resultado $cliente->__SoapCall('login'$parametros);
     
     if(
$resultado->status_code == 0)
     {
         echo 
"Sesión iniciada exitosamente <br><br>";
         
$sessionId $resultado->message;
                  
         
/*Listar los usuarios*/
         
echo "<br><br> Lista de usuarios_____________________________________<br>";
         
$parametros = array(array('sessionId'=>$sessionId));          
         
$resultado $cliente->__SoapCall('userList'$parametros);         
         
$usersArray $resultado->users;
         if (
is_array($usersArray))
         {
             foreach (
$usersArray as $user)
             {
                 echo 
"User name: $user->name, User ID: $user->guid <br>";             
             }                   
         }              
        else
        {
            echo 
"Error: $usersArray->name <br>";
        } 

        
/*Crear un nuevo usuario*/
        
echo "<br><br> Nuevo Usuario_____________________________________<br>";
        
$parametros = array(array('sessionId'=>$sessionId'userId' => 'JoseO',
            
'firstname'=>'Jose''lastname'=>'Ojeda''email'=>'[email protected]'
            
'role'=>'PROCESSMAKER_OPERATOR''password'=>'123456'));
        
//$resultado = $cliente->__SoapCall('createUser', $parametros);
        
if ($resultado->status_code == 0
        {
            echo 
"$resultado->message <br> User ID: $resultado->userUID";
            
            
$session curl_init('http://smart.parquesoftpasto.com/api?task=newuser');            
            
curl_setopt ($sessionCURLOPT_POST,1);            
            
//le decimos qué parametros enviamos (pares nombre/valor, también acepta un array)
            
curl_setopt ($sessionCURLOPT_POSTFIELDS"[email protected]&password=123456&name=Jose&apellido=Ojeda&identificacion=123456");
            
curl_setopt($session,CURLOPT_RETURNTRANSFER,1);

            
print_r($session);
            
            
$respuesta curl_exec($session);    

            if(
$respuesta != 0)
            {
                echo 
"<br>Usuario creado exitosamente en Ushahidi!!!!";    
                
print_r($respuesta);            
                
curl_close ($session);
            }        
            else
            {
                echo 
"<br>Imposible crear usuario en base de datos de ushahidi";
                
$error curl_error($session);
                echo 
"<br>".$error;
                
print_r($respuesta);
                
curl_close ($session);
            } 
        }
            
        else
        {
            echo 
"<br>Incapaz de crear usuario en ProcessMaker.<br>Error Number: $resultado->status_code<br>"."Mensaje de Error: $resultado->message<br>";
        }
            

        
/*Listar Casos*/ /*
        echo "<br><br> Lista de Casos_____________________________________<br>";
        $parametros = array(array('sessionId'=>$sessionId));
         $resultado = $cliente->__SoapCall('caseList', $parametros);
         $casosArray = $resultado->cases; 
         $n=0;
         if ($casosArray != NULL)
         {
             foreach ($casosArray as $caso)
             {
                 //while($n<count($casosArray))
                 //{
                     echo "Nombre del Caso: $caso->name, Caso ID: $caso->gd, Estado: $caso->status, Index: $caso->delIndex <br><br>";
                     $n++;
                 //}
             }                       
         }              
        else 
        {
            echo "<br> Hay cero casos. <br><br>";
        } */


        /*Lista de Procesos*/ /*
        echo "<br><br> Lista de Procesos_____________________________________<br>";
        $parametros = array(array('sessionId'=>$sessionId));
        $resultado = $cliente->__SoapCall('processList', $parametros);
        $processesArray = $resultado->processes;
         
         if ($processesArray != NULL)
        {
            if (is_array($processesArray))
            {
                foreach ($processesArray as $process)
                {
                    echo "Process name: $process->name, Process ID: $process->guid <br>";                    
                }                    
            }
            else
            {
                echo "Process name: $processesArray->name, Process ID: $processesArray->guid <br>";
            }
         }
         else
         {
             echo "Error: $processesArray->name <br>";
         } */


         /*Lista de Tareas*/ /*
         echo "<br><br> Lista de tareas_____________________________________<br>";
         $parametros = array(array('sessionId'=>$sessionId));
         $resultado = $cliente->__SoapCall('taskList', $parametros);
         $tasksArray = $resultado->tasks;
         if ($tasksArray != (object) NULL)
         {
             foreach ($tasksArray as $task)
             {
                 echo "<br> Nombre de la tarea: $task->name, Task ID: $task->guid <br>";
             }                   
         }              
        else 
        {
            echo "<br> Hay cero tareas asignadas a este usuario. <br>";
        } */
              
                

        /* Crear Nuevo Caso */ /*
        
        echo "<br><br> Nuevo Caso_____________________________________<br>";
        $name = new variableStruct();
        $vars = array('APPLICANT_NAME'=>'Carlos', 'APPLICANT_LAST'=>'Jaramillo', 
             'APPLICANT_ID'=>'123456', 'APPLICANT_EMAIL'=>'[email protected]',
             '$APPLICANT_EMPLOYER'=>'ParqueSoft');
        $aVars = array();
         foreach ($vars as $key => $val)
         { 
              $obj = new variableStruct();
              $obj->name = $key;
              $obj->value = $val;
              $aVars[] = $obj;     
         }*/
        

        /*Use las funciones Lista de procesos () y Lista de tareas () para buscar los IDs para el  
        proceso y su primera tarea.*/  /*
        $parametros = array(array('sessionId'=>$sessionId, 'processId'=>'82624301853c85a89813cd8090028969', 
             'taskId'=>'182114808548079fa7decf8034689551', 'variables'=>$aVars));
         $resultado = $cliente->__SoapCall('newCase', $parametros);
         if ($resultado->status_code == 0)
         {
             echo "Nuevo ID de caso: $resultado->caseId, Caso No: $resultado->caseNumber \n";
         }
              
        else
        {
            echo "Error al crear caso: $resultado->message \n";
        }*/
     
}
     else
     {
         echo 
$resultado->status_code;
     }

    
?>

</body>
</html>
El usuario que se esta registrando mediante SOAP es la plataforma ProcessMaker, y necesito que los datos de este mismo usuario se guarden en la plataforma en la cual uso el Curl que es de Ushahidi.

Dentro de la API de ushahidi esta el siguiente método que seria el encargado de recibir los datos enviados por el Curl (Se que no los guardo en la BD aun, pero bueno este es un código de ejemplo):

Código PHP:
public function new_user()
    {  

        if(isset(
$_POST['name']) AND isset($_POST['apellido']) AND isset($_POST['email']) AND isset($_POST['identificacion']) AND isset($_POST['password']))
        {
            echo 
"El usuario que intenta ingresar en la BD de Ushahidi es:";
            echo 
"<br>Nombre: ".$_POST['name'];
            echo 
"<br>Apellido: ".$_POST['apellido'];
            echo 
"<br>Email: ".$_POST['email'];
            echo 
"<br>Identificacion: ".$_POST['identificacion'];
            echo 
"<br>Contraseña: ".$_POST['password'];

            return 
0;
        }
        else
        {
            echo 
"No se ha ingresado algún usuario.";
            return 
1;
        }
        
    } 
Pero cual ejecuto el código en el navegador, me salta un error de que falta un parámetro para poder ejecutar el curl (que es donde esta mi problema, el resto del código funciona perfectamente).

Solicito su ayuda, pues la verdad no se cual es el error.
  #2 (permalink)  
Antiguo 10/12/2014, 17:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con uso de CURL

¿Será posible que compartas el error "que te salta" o es nuestra obligación adivinar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/12/2014, 08:58
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema con uso de CURL

Este es el error que obtengo:

{"code":"001","message":"Falta un par\u00e1metro - task."}
  #4 (permalink)  
Antiguo 11/12/2014, 09:08
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema con uso de CURL

La respuesta completa que obtengo al ejecutar el primer script es:

Cita:
Sesión iniciada exitosamente



Lista de usuarios_____________________________________
User name: admin, User ID: 00000000000000000000000000000001
User name: ciudadano10, User ID: 2663124505475248d862448088706181
User name: ciudadano8, User ID: 32274739854752434597210075750665
User name: ciudadano9, User ID: 329780868547524677c0762067506523
User name: gmoran, User ID: 330891320544ec029de7b05010421975
User name: web, User ID: 3429105005419bdbb8511b0057739426
User name: ciudadano3, User ID: 34523020154750c294d7a53097826361
User name: Sistemas, User ID: 3505606475473e47a57b8e0092502559
User name: gloria.eraso, User ID: 490531378547739bb17fb04001279042
User name: ciudadano6, User ID: 524159794547523e22fac04053506398
User name: nata, User ID: 527311136541d99fd5af925004722310
User name: ciudadano7, User ID: 5407001975475240ab9fb32011311041
User name: ciudadano4, User ID: 60267788354752346c15492025293527
User name: CJaramillo, User ID: 6464500735453f2b1ed7152031294365
User name: Mario, User ID: 656762485544529e2281618091722606
User name: ciudadano1, User ID: 73019616654452de12ef234059968966
User name: ciudadano5, User ID: 7673065155475238fe9c0c5039229833
User name: ciudadano2, User ID: 95634477154750be8163414085681103
User name: it, User ID: 961404410544ebffd2f1e72019592526


Nuevo Usuario_____________________________________

User ID: Resource id #8
Imposible crear usuario en base de datos de ushahidi
{"code":"001","message":"Falta un par\u00e1metro - task."}
  #5 (permalink)  
Antiguo 11/12/2014, 10:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con uso de CURL

Pues el error es bastante claro: hace falta el parámetro task.

Y al parecer lo incluyes en la URL al hacer curl_init() ¿no será que debes pasarlo en los CURLOPT_POSTFIELDS?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 11/12/2014, 10:17
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema con uso de CURL

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues el error es bastante claro: hace falta el parámetro task.

Y al parecer lo incluyes en la URL al hacer curl_init() ¿no será que debes pasarlo en los CURLOPT_POSTFIELDS?

Lo que me confunde es que si digito directamente en la barra de navegacion:

Código PHP:
http://smart.parquesoftpasto.com/api?task=newuser 
Ejecuta el script del API sin problema.
  #7 (permalink)  
Antiguo 11/12/2014, 10:19
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema con uso de CURL

No se como puedo adicionar el task del api en el POSTFIELDS, te agradecería la ayuda.
  #8 (permalink)  
Antiguo 11/12/2014, 10:29
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema con uso de CURL

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues el error es bastante claro: hace falta el parámetro task.

Y al parecer lo incluyes en la URL al hacer curl_init() ¿no será que debes pasarlo en los CURLOPT_POSTFIELDS?

Lo que me confunde es que si digito directamente en la barra de navegacion:

Código PHP:
http://smart.parquesoftpasto.com/api?task=newuser 
Ejecuta el script del API sin problema.
  #9 (permalink)  
Antiguo 11/12/2014, 10:38
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema con uso de CURL

Fue exacto tu comentatio, muchas gracias por la ayuda.

Etiquetas: curl, html, usuarios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:26.