Tengo esta curvatura de la función que enviar json a una API REST:

$url = "https://server.com/api.php";
$fields = array("method" => "mymethod", "email" => "myemail");

$result = sendTrigger($url, $fields);

function sendTrigger($url, $fields){  
    $fields = json_encode($fields);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=UTF-8"));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $curlResult["msg"] = curl_exec($ch);
    $curlResult["http"] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $curlResult;
}

En el servidor, tengo este código:

$data = json_decode($_REQUEST);
var_dump($data);
exit();

Cuando ejecuto el comando cURL me devuelve esto:

Warning:  json_decode() expects parameter 1 to be string, array given in

¿Cómo es eso?

Gracias.

  • Mezclado json_encode con json_decode?
  • posibles duplicados de Cómo conseguir el cuerpo de un POST en php?
  • Porque $_REQUEST es casi siempre una matriz, incluso si está vacío. Su JSON blob no aparece allí, pero php://input.
  • A qué te refieres $result, no $_REQUEST?
InformationsquelleAutor Leo Stein | 2013-10-03

2 Comentarios

  1. 10

    Si usted no está utilizando uno de la forma codificada de los tipos de contenido, PHP no llenar los datos en $_POST.

    Usted necesita para obtener su JSON carga de PHP primas de entrada como esta:

    $json = file_get_contents('php://input');
    $array = json_decode($json);
  2. 0

    En PHP json_decode convierte una cadena en un objeto. El $_REQUEST variable es una variable global que contiene el contenido de $_GET, $_POST, y $_COOKIE (ver PHP referencia). Más probable es que haya un error en el código y que probablemente significaba para uso $request en lugar de $_REQUEST.

Dejar respuesta

Please enter your comment!
Please enter your name here