New question

Question:

Date: 18-09-2017 11:31:17 (In Spanish)

Enviar caracteres especiales con Curl ?¡ ¿ [Unresolved]

Estoy usando Curl , para enviar caracteres especiales :

Pero al recibir la información en el servicio desaparece o no logra ser recuperada.

Investigando en distintos foros, he leído que debo especificar en Curl el tipo de charset enviado, pero no se exactamente que funcion de Curl USAR.



MI CODIGO :



   

  $pass="̙֢ÞÍšÜÔœÝÝt";

 $postData = array('email'=>"andy7.jca@outlook.com",'pwd' =>$pass);

                         
               $ch = curl_init(); 
              
               curl_setopt($ch, CURLOPT_URL, "https://XXXXXXXX/_pruebaweb/APIREST/Api.php?url=login");  
               curl_setopt($ch, CURLOPT_HEADER, false);  
               curl_setopt($ch, CURLOPT_POST, true);  
               //http_build_query => Generar una cadena de consulta codificada estilo URL a partir de array  
               curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));  
               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
                     
  $data = curl_exec($ch);  
  print_r($data);  
  curl_close($ch);



Se que al enviar la variable $pass , tal cual esta no llegara o llegara vacía.


Otra posibilidad es la de enviar el codigo sin encriptar y encriptarlo del lado del servicio , pero aunque logro la encriptacion del valor no me a funcionado .



Y por último suponiendo que ingreso la clave de forma estática en el servicio algo como:


 private function login() {  
     if ($_SERVER['REQUEST_METHOD'] != "POST") {  
       $this->mostrarRespuesta($this->convertirJson($this->devolverError(1)), 405);  
     }  
     if (isset($this->datosPeticion['email'], $this->datosPeticion['pwd'])) {  
    //el constructor del padre ya se encarga de sanear los datos de entrada  
       $email = $this->datosPeticion['email'];  
       $pwd = $this->datosPeticion['pwd'];  
       
       if (!empty($email) and !empty($pwd)) {  
           
    
        
         

   $pwd="̙֢ÞÍšÜÔœÝÝ";   // AQUI INGRESO EL VALOR ESTATICO  DE FORMA STATICA 



      
//         if (filter_var($email, FILTER_VALIDATE_EMAIL)) {  

           //consulta preparada ya hace mysqli_real_escape()  


           $query = $this->_conn->prepare("SELECT id, nombre, email,  fRegistro,  '$pwd' as clave  FROM usuarioAPI WHERE email=:email AND password=:pwd");  
 


           $query->bindValue(":email", $email);  
           $query->bindValue(":pwd", $pwd);
           
           $query->execute();  

           if ($fila = $query->fetch(PDO::FETCH_ASSOC)) {  
             $respuesta['estado'] = 'correcto';  
             $respuesta['msg'] = 'datos pertenecen a usuario registrado'; 
             

            
             $respuesta['usuario']['id'] = $fila['id'];  
             $respuesta['usuario']['nombre'] = $fila['nombre'];  
             $respuesta['usuario']['email'] = $fila['email'];  
             $respuesta['usuario']['fregistro'] = $fila['fRegistro'];  
             $respuesta['usuario']['clave'] = $fila['clave'];  
   

             $this->mostrarRespuesta($this->convertirJson($respuesta), 200);  
           }  
//         }  
       }  
     }  
     $this->mostrarRespuesta($this->convertirJson($this->devolverError(3)), 400);  
   }  




De realizar algo asi el proceso de login se ejecuta correctamente , pero en el valor de la columna que devuelvo dentro de la sentencia ya no obtengo ̙֢ÞÍšÜÔœÝÝ sino \u00cc\u2122\u00d6\u00a2\u00de\u00cd\u0161\u00dc\u00d4\u0153\u00dd\u00dd nuevamente es un tema de CHARSET O ALGO ASI , BUENO AGRADESCO SUS COMENTARIOS.
Tags: cURL - PHP - PHP JSON - REST - Webservices Votes: -1 - Answers: 3 - Views: 7 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 18-09-2017 12:05:18 Dyan, esto tiene que ver con la codificacion de tus datos.

    Recuerdas ese meta tag:

    <meta charset="ISO-8859-2"/>


    En la URL que estás consultando seguramente tiene un valor asignado que es diferente a la codificación que maneja tu consola.

    Hasta donde yo sé cURL no hace transformación entre codificaciones pero bash tiene muy buenas herramientas para convertir la codificación de tu respuesta.

    Dale un vistazo a este artículo, ahí viene una explicación sencilla y un ejemplo que te puede servir.

    En uno de los ejemplos menciona que utilices el header Accept-Charset. Valdría la pena que lo intentaras.

    Saludos
      Votes: 0 - Link answer
     
  • Date: 18-09-2017 13:30:18 Gracias por tu respuesta ERNESTO, pude leer el articulo.Como mencionan es probable que cURL NO REALIZE LA CONVERSION DEL CHARSET NI DE ISO A UTF-8 O BICEVERSA como respuesta claro.

    Pero lo que ami me interesa es realizar el envio con el formato que admita los caracteres puestos lineas arriba lo que implicaría especificarle a Curl que los datos se estan enviando en UTF-8 O ISO :/ pero aun no se como , recién estoy empezando con cURL.

    He revisado algo de documentación , pero no tengo éxito aun.

    POR EJEMPLO EN EL SIGUIENTE LINK ME INDICAN QUE PARA REALIZAR LA PETICION con caracteres especiales DEBO USAR "curl_escape".

    http://php.net/manual/es/function.curl-escape.php
      Votes: -1 - Link answer
     
  • Date: 30-09-2017 04:26:42 :v   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com