php - parametros - Enviar datos POST a través de JSON sin procesar con cartero
postman post json object (5)
Tengo Postman (el que no se abre en Chrome) y estoy tratando de hacer una solicitud POST usando json sin formato.
En la pestaña Cuerpo, he seleccionado "sin procesar" y "JSON (aplicación / json)" con este cuerpo:
{
"foo": "bar"
}
Para el encabezado tengo 1,
Content-Type: application/json
En el lado de PHP, solo estoy haciendo
print_r($_POST);
por ahora, y estoy obteniendo una matriz vacía.
Si uso jQuery y hago:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
Estoy obteniendo lo esperado:
Array
(
[foo] => bar
)
Entonces, ¿por qué no funciona con Postman?
Capturas de pantalla del cartero:
y encabezado:
A diferencia de
jQuery
para leer
JSON
procesar, deberá decodificarlo en PHP.
print_r(json_decode(file_get_contents("php://input"), true));
php://input
es una secuencia de solo lectura que le permite leer datos sin procesar del cuerpo de la solicitud.
$_POST
son variables de formulario, deberá cambiar para
form
botón de radio en
postman
luego usar:
foo=bar&foo2=bar2
Para publicar
json
procesar con
jquery
:
$.ajax({
"url": "/rest/index.php",
''data'': JSON.stringify({foo:''bar''}),
''type'': ''POST'',
''contentType'': ''application/json''
});
Estaba enfrentando el mismo problema, el siguiente código funcionó para mí:
$params = (array) json_decode(file_get_contents(''php://input''), TRUE);
print_r($params);
Instale la aplicación nativa Postman, la extensión de Chrome ha quedado en desuso. (La mía se abría en su propia ventana pero aún se ejecutaba como aplicación de Chrome)
La respuesta de Meda es completamente legítima, pero cuando copié el código, recibí un error.
En algún lugar de la
"php://input"
hay un carácter no válido (¿quizás una de las comillas?).
Cuando escribí el código
"php://input"
manualmente, funcionó.
¡Me tomó un tiempo descubrirlo!