Foros del Web » Programando para Internet » PHP »

Recibiendo json enviado con curl

Estas en el tema de Recibiendo json enviado con curl en el foro de PHP en Foros del Web. Buenas, necesito enviar datos en json de un cliente a un servidor donde estoy haciendo una api, lo llamo de la siguiente forma. Código PHP: ...
  #1 (permalink)  
Antiguo 06/01/2014, 14:15
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 3 meses
Puntos: 0
Recibiendo json enviado con curl

Buenas, necesito enviar datos en json de un cliente a un servidor donde estoy haciendo una api, lo llamo de la siguiente forma.
Código PHP:
<?
$data 
= array("name" => "Hagrid""age" => "36");
$data_string json_encode($data);

$ch curl_init('https://172.16.19.60/curl.php');
curl_setopt($chCURLOPT_CUSTOMREQUEST"POST");
curl_setopt($chCURLOPT_POSTFIELDS$data_string);
curl_setopt($chCURLOPT_VERBOSETRUE);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);                                                                       
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);

curl_setopt($chCURLOPT_HTTPHEADER, array(
    
'Content-Type: application/json',
    
'Content-Length: ' strlen($data_string))
);

//$result = curl_exec($ch);
if( ! $result curl_exec($ch)){
                echo 
curl_error($ch);
}

echo 
"<pre>";var_dump(json_decode($result));echo "</pre>";
?>
Donde curl.php no tiene casi nada, lo que me interesa es saber como recibo el $data_string en curl.php para poder recibir name Hagrid y age 36? Me interesa recibir $data_string porque ahi van a venir las cosas que van a pedir los clientes.
Probé algo así pero nada
Código PHP:
<?php 
        $array
=$data_string;
        
$string=json_encode($array);
        echo 
$string;
?>
  #2 (permalink)  
Antiguo 06/01/2014, 14:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recibiendo json enviado con curl

El comportamiento es exactamente el mismo como estuvieras enviando un formulario, así que si ya sabes como leer variables de un formulario ($_GET, $_POST) entonces ya sabes como leer dichos datos.

Si tienes más dudas lee el siguiente manual: http://www.php.net/variables.external
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/01/2014, 14:47
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Recibiendo json enviado con curl

Cita:
Iniciado por pateketrueke Ver Mensaje
El comportamiento es exactamente el mismo como estuvieras enviando un formulario, así que si ya sabes como leer variables de un formulario ($_GET, $_POST) entonces ya sabes como leer dichos datos.

Si tienes más dudas lee el siguiente manual: http://www.php.net/variables.external
Gracias por la respuesto, he intentado recibirlo por $_POST y nada, por eso hacía esta pregunta.
  #4 (permalink)  
Antiguo 06/01/2014, 14:59
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Recibiendo json enviado con curl

Cita:
Iniciado por chacamariano Ver Mensaje
Gracias por la respuesto, he intentado recibirlo por $_POST y nada, por eso hacía esta pregunta.
He hecho lo siguiente y no me devuelve nada
Código PHP:
        $datos=$_POST;
        
$string=json_encode($datos);
        echo 
$string
Pero si en cambio yo defino el json a mano en curl.php si anda por ejemplo
Código PHP:
        $datos=array("name" => "Hagrid""age" => "35");
        
$string=json_encode($datos);
        echo 
$string
  #5 (permalink)  
Antiguo 06/01/2014, 15:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recibiendo json enviado con curl

A ver, calma, no es tan fácil.

En primer lugar esto está mal.
Código PHP:
Ver original
  1. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

Porque $data_string debe ser una cadena valida para ser pasada como parámetros, eso se explica perfectamente en el manual sobre dicha opción.

Pero tu estás construyendo mal la cadena, error ahí.

Así debería ser:
Código PHP:
Ver original
  1. $data = array("name" => "Hagrid", "age" => "36");
  2. $data_string = http_build_query(array('data' => json_encode($data)));

Ahora, al recibir dicha variable deberías leerla así:
Código PHP:
Ver original
  1. $json = json_decode($_POST['data']);

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 08/01/2014, 07:26
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Recibiendo json enviado con curl

Hola gracias por la respuesta! No anda así tampoco el error parece que es al enviarlo porque cuando recibo por POST no capturo nada.
  #7 (permalink)  
Antiguo 08/01/2014, 09:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recibiendo json enviado con curl

Sería bueno ver el código que tienes ya modificado, de otra forma adivinar que haces mal es imposible.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: curl, url
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 18:13.