'Perform an HTTP request
@raises Exception: Any exception that can be raised by Django
@see: C{L{HTTPFetcher.fetch}}'

def fetch(self, url, body=None, headers=None):

    if body:
        data = parse_qs(body)
        response = self.client.post(url, data)
    else:
        data = {}
        if (headers and ('Accept' in headers)):
            data['CONTENT_TYPE'] = headers['Accept']
        response = self.client.get(url, data)
    content = response.content
    final_url = url
    response_headers = {}
    if ('Content-Type' in response):
        response_headers['content-type'] = response['Content-Type']
    if ('X-XRDS-Location' in response):
        response_headers['x-xrds-location'] = response['X-XRDS-Location']
    status = response.status_code
    return HTTPResponse(body=content, final_url=final_url, headers=response_headers, status=status)
