'Returns a rendition of the full HTTP message, including headers.
When the content is an iterator, the actual content is replaced with the
output of str(iterator) (to avoid exhausting the iterator).'

def __str__(self):

    if self._is_str_iter:
        content = ''.join(self.get_content())
    else:
        content = str(self.content)
    return (('\n'.join([('%s:    %s' % (key, value)) for (key, value) in self.headers.headeritems()]) + '\n\n') + content)
