Tengo Postman (el que no se abre en Chrome) y estoy tratando de hacer una solicitud POST usando raw json.
En la pestaña Cuerpo, tengo "sin procesar" seleccionado 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 lo estoy haciendo print_r($_POST);
por ahora, y obtengo una matriz vacía.
Si uso jQuery y lo hago:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
Estoy obteniendo como esperaba:
Array
(
[foo] => bar
)
Entonces, ¿por qué no funciona con Postman?
Capturas de pantalla del cartero:
y encabezado:
array(1) {["foo"]=> string(3) "bar"}
con jQuery y todavía una matriz vacía con Postman:array(0) {}
fields
yfoo
no coincidirá, por lo tanto, no funcionará, no estoy seguro de si es un error tipográfico, pero asegúrese de que coincidaRespuestas:
A diferencia
jQuery
de lo que ocurre con la lectura en brutoJSON
, deberá decodificarlo en PHP.php://input
es un flujo de solo lectura que le permite leer datos sin procesar del cuerpo de la solicitud.$_POST
son variables de formulario, deberá cambiar alform
botón de radio ypostman
luego usar:Para publicar sin procesar
json
conjquery
:fuente
Simplemente marque la opción JSON en el menú desplegable junto a binario; cuando haces clic en raw. Esto debería hacer
fuente
La respuesta de meda es completamente legítima, pero cuando copié el código, ¡recibí un error!
En algún lugar
"php://input"
hay un carácter no válido (¿quizás una de las comillas?).Cuando escribí el
"php://input"
código manualmente, funcionó. ¡Me tomó un tiempo darme cuenta!fuente
200c 200b
(caracteres de ancho cero) entre la "n" y la "p" en "entrada". No estoy seguro de cómo terminó con eso, pero ahora está arreglado.Estaba enfrentando el mismo problema, el siguiente código funcionó para mí:
fuente
Instale la aplicación nativa Postman, la extensión de Chrome ha quedado obsoleta. (El mío se estaba abriendo en su propia ventana, pero aún se ejecutaba como aplicación de Chrome)
fuente