public function setPost(array $post) : Request
    {
        // Ensure that we get a value for getQuery() that's consistent with the query string, and whose scalar values
        // have all been converted to strings, to get a result similar to what we'd get with an incoming HTTP request.
        parse_str(http_build_query($post), $this->post);

        if (! $this->isContentType('multipart/form-data')) {
            $body = http_build_query($post);
            $body = new MessageBodyString($body);

            $this->setBody($body);
            $this->setHeader('Content-Type', 'x-www-form-urlencoded');
        }

        return $this;
    }