Кто-нибудь знает правильный способ post
использования JSON Guzzle
?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Я получаю internal server error
ответ от сервера. Работает с использованием Chrome Postman
.
'json' => $data
: stackoverflow.com/a/44154428/842768Ответы:
Для Guzzle 5, 6 и 7 вы делаете это так:
Документы
источник
RequestOptions
константы для ключей массива параметров (GuzzleHttp\RequestOptions::JSON
в данном случае) - это облегчает обнаружение опечаток, поскольку они внезапно становятся уведомлениями, а не просто незаметными ошибками, ожидающими проблем.jsson
например) не вызовет никакой ошибки, и вам может потребоваться некоторое время, чтобы найти опечатку.Для Жрала <= 4 :
Это необработанный почтовый запрос, так что размещение JSON в теле решило проблему
источник
$client->post($url, ['body' => $string, 'headers' => ['Content-type' => 'application/json']]);
'json' => $data
: stackoverflow.com/a/44154428/842768Простой и базовый способ (guzzle6):
Чтобы получить код статуса ответа и содержание тела, я сделал это:
источник
Это сработало для меня (используя Guzzle 6)
источник
источник
['json' => $body]
, что здесь лучше, как уже упоминалось в ответе Майкла.$res->json();
работает только в Guzzle 5.3. Это было удалено в v6.json_decode()
вместо этого.источник
Это работает для меня с Guzzle 6.2:
Согласно документации жрет делать код json_encode
источник
Смотрите Документы .
источник
Версия Php: 5.6
Версия Symfony: 2.3
Жрать: 5.0
Недавно у меня был опыт отправки json с Guzzle. Я использую Symfony 2.3, поэтому моя жаровня может быть немного старше.
Я также покажу, как использовать режим отладки, и вы можете увидеть запрос перед его отправкой,
Когда я сделал запрос, как показано ниже, получил успешный ответ;
источник
Ответ от @ user3379466 можно заставить работать
$data
следующим образом:Нашему проекту нужно было вставить переменную в массив внутри строки json, что я сделал следующим образом (на случай, если это кому-нибудь поможет):
Так
$existing_variable
что, скажем, 90210, вы получите:Также стоит отметить, что вы также можете установить и этот параметр
'Accept' => 'application/json'
на тот случай, если конечная точка, к которой вы обращаетесь, заботится о подобных вещах.источник
$data
, используяjson_encode
:$data = json_encode(array('collection' => $existing_variable));
@ user3379466 правильно, но здесь я переписываю полностью:
--- Решение для * Guzzle 6 * --- пакета, который вам нужен:
источник
Приведенные выше ответы у меня не сработали как-то. Но это прекрасно работает для меня.
источник
Просто используйте это, это будет работать
источник