@topuserman

GuzzleHttp: как правильно работать с handler?

Всем привет!
У меня задачу: писать в файл все запросы и ответы, которые проходят через http-клиента (GuzzleHttp).

Делаю это следующим образом:

<?php

$stack = HandlerStack::create();

$stack->push(
    GuzzleHttp\Middleware::log(
        $myLogger,
        $messageFormater
    )
);

$http = new GuzzleHttp\Client(array(
	'handler' => $stack
));

$result = $http->get($url);

var_dump($result->getBody->getContents()); // "" - пусто


если убирать handler - то результат возвращается. в чем причина такого поведения ?
как можно записывать запросы и ответы в журнал и при этом, чтобы клиент продолжал штатно работать, и возвращать результата ?

Код не запускал, возможно печатки, но в основном все так.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@topuserman Автор вопроса
Отвечу на свой вопрос:

это специфика работы Библиотеки GuzzleHttp.
Т.к. в Log middleware происходит чтение из потока данных сообщения, то после чтения не происходит сброс указателя к началу потока.

Необходимо вручную сбрасывать: $result->getBody()->rewind()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы