Symfony 2 - Guzzle 6.X HTTP | получить ответ тела

1

Я использую Guzzle с Symfony 2.7.3, и я не знаю, почему у меня заголовок ответа, но не тело. (Я нахожусь на локальном хосте с WAMP)

$donnees = array(// Base URI is used with relative requests
            'base_uri' => $urlAuth,
            // You can set any number of default request options.
            'timeout'  => 2.0,
            'headers' => [
                'User-Agent' => 'testing/1.0',
                'Accept'     => 'application/json'
            ],
            'verify' => false,
            'json'      => ["Id" => $Id, 
                                                "Username" => $username,
                                                "Password" => $password,
                                                "SecretId" => $secretId]
            );

        $client = new Client($donnees);

        $response = $client->post( '/auth/', $donnees );
dump($response);

поэтому я получил:

Изображение 174551

Но поток пуст, тогда как я должен получить токен (вы можете увидеть длину контента: 69)

Можете ли вы мне помочь, я не знаю, что я пропустил...

(Сервер принимает только POST, чтобы получить токен)

  • 0
    $ body = $ response-> getBody ();
  • 0
    Я знаю, но это просто дать объект Stream и он пуст (так же, как на экране)
Показать ещё 5 комментариев
Теги:
http
guzzle6

2 ответа

2
Лучший ответ

Поскольку это ответ json, вы должны его расшифровать, добавьте:

$response_body = json_decode($response->getBody(), true);

true означает, что возвращенные объекты будут преобразованы в ассоциативные массивы.

  • 0
    Я не понимаю, почему поток выглядит пустым, но с декодированием у меня есть содержимое. Большое спасибо!
  • 0
    Поскольку тело ответа guzzle является потоком PHP, вы должны выполнить с ним операцию, чтобы получить то, что вы хотите (я не мастер PHP, поэтому, возможно, я ошибаюсь).
Показать ещё 1 комментарий
0

$response->getBody() вы получаете объект GuzzleHttp\Psr7\Stream. Этот класс имеет полезный метод __toString(), поэтому следующая строка будет работать, как ожидалось:

$response_body = (string)$response->getBody();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню