Question:
Date: 18-09-2017 11:31:17
(In Spanish)
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 :
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:
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. Votes: -1 - Answers: 3 - Views: 7 Share on: Google Facebook Twitter LinkedIn Link
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. 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 -
To actively participate in the community first must authenticate, enter the system.Sign In