Alguém sabe a maneira correta de post
usar o JSON Guzzle
?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Eu recebo uma internal server error
resposta do servidor. Funciona usando o Chrome Postman
.
'json' => $data
: stackoverflow.com/a/44154428/842768Respostas:
Para o Guzzle 5 e 6, você faz assim:
Documentos
fonte
RequestOptions
constantes para as chaves do array de opções (GuzzleHttp\RequestOptions::JSON
neste caso) - isso facilita a detecção de erros de digitação, pois de repente eles se tornam avisos em vez de apenas bugs silenciosos esperando para causar problemas.jsson
por exemplo) não gera nenhum erro, e você pode levar algum tempo para encontrar seu erro de digitação.Para Guzzle <= 4 :
É uma solicitação de postagem bruta, portanto, colocar o JSON no corpo resolveu o problema
fonte
$client->post($url, ['body' => $string, 'headers' => ['Content-type' => 'application/json']]);
'json' => $data
: stackoverflow.com/a/44154428/842768A maneira simples e básica (guzzle6):
Para obter o código de status da resposta e o conteúdo do corpo, fiz isso:
fonte
Isso funcionou para mim (usando o Guzzle 6)
fonte
fonte
['json' => $body]
é o melhor caminho aqui, como mencionado pela resposta de Michael.$res->json();
só funciona no Guzzle 5.3. Foi removido na v6.json_decode()
vez disso.fonte
Isso funciona para mim com o Guzzle 6.2:
De acordo com a documentação, guzzle faça o json_encode
fonte
Veja Documentos .
fonte
Versão Php: 5.6
Versão Symfony: 2.3
Guzzle: 5.0
Recentemente, tive uma experiência sobre o envio de json com o Guzzle. Eu uso o Symfony 2.3 para que minha versão do guzzle possa ser um pouco mais antiga.
Também mostrarei como usar o modo de depuração e você poderá ver a solicitação antes de enviá-la,
Quando fiz o pedido, como mostrado abaixo, obtive a resposta bem-sucedida;
fonte
A resposta de @ user3379466 pode ser configurada da
$data
seguinte maneira:O que nosso projeto precisava era inserir uma variável em uma matriz dentro da string json, que fiz da seguinte maneira (caso isso ajude alguém):
Assim
$existing_variable
sendo, digamos, 90210, você obtém:Também digno de nota é que você também pode definir o
'Accept' => 'application/json'
caso, caso o terminal que você está atingindo se importe com esse tipo de coisa.fonte
$data
usandojson_encode
:$data = json_encode(array('collection' => $existing_variable));
@ user3379466 está correto, mas aqui reescrevo na íntegra:
--- Solução para o * Guzzle 6 * --- -package que você precisa:
fonte
As respostas acima não funcionaram para mim de alguma forma. Mas isso funciona bem para mim.
fonte
Basta usar isso funcionará
fonte