Eu tenho Postman (aquele que não abre no Chrome) e estou tentando fazer uma solicitação POST usando json bruto.
Na guia Body, selecionei "raw" e "JSON (application / json)" com este corpo:
{
"foo": "bar"
}
Para o cabeçalho, tenho 1, Content-Type: application/json
No lado do PHP, estou fazendo apenas print_r($_POST);
por agora, e estou obtendo um array vazio.
Se eu usar jQuery e fizer:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
Estou recebendo conforme o esperado:
Array
(
[foo] => bar
)
Então, por que não está funcionando com o Postman?
Capturas de tela do Postman:
e cabeçalho:
array(1) {["foo"]=> string(3) "bar"}
com jQuery e ainda um array vazio com Postman:array(0) {}
fields
efoo
não corresponderá, portanto, não funcionará. Não tenho certeza se é um erro de digitação, mas certifique-se de que correspondemRespostas:
Ao contrário
jQuery
, para ler raw,JSON
você precisará decodificá-lo em PHP.php://input
é um fluxo somente leitura que permite ler dados brutos do corpo da solicitação.$_POST
são variáveis de formulário, você precisará alternar para o botão deform
rádio empostman
seguida, use:Para postar cru
json
comjquery
:fonte
Basta marcar a opção JSON na lista suspensa ao lado de binário; quando você clica em bruto. Isso deve servir
fonte
A resposta da meda é completamente legítima, mas quando copiei o código, ocorreu um erro!
Em algum lugar do
"php://input"
há um caractere inválido (talvez uma das aspas?).Quando digitei o
"php://input"
código manualmente, funcionou. Levei um tempo para descobrir!fonte
200c 200b
(caracteres de largura zero) entre o "n" e o "p" em "entrada". Não tenho certeza de como ele terminou com isso, mas está consertado agora.Eu estava enfrentando o mesmo problema, o seguinte código funcionou para mim:
fonte
Instale o aplicativo nativo Postman, a extensão do Chrome foi descontinuada. (O meu estava abrindo na própria janela, mas ainda funcionava como aplicativo do Chrome)
fonte