Guzzle getContents()->getBody() - Second calls return empty string
It's expected behaviour, because response body is a stream (read more in PSR-7 spec).
To be able to read the body again, you need to call ->getBody()->rewind()
to rewind the stream to the beginning. Just be aware that it can cause an exception in rare cases, because not all stream types support rewind operation.