def _send_request(self, request):
        headers = {"X-Experience-API-Version": self.version}
        if self.auth is not None:
            headers["Authorization"] = self.auth
        headers.update(request.headers)
        params = request.query_params
        params = {k: unicode(params[k]).encode('utf-8') for k in params.keys()}
        params = urllib.urlencode(params)
        if request.resource.startswith('http'):
            url = request.resource
        else:
            url = self.endpoint
            url += request.resource
        parsed = urlparse(url)
        if parsed.scheme == "https":
            web_req = httplib.HTTPSConnection(parsed.hostname, parsed.port)
        else:
            web_req = httplib.HTTPConnection(parsed.hostname, parsed.port)
        path = parsed.path
        if parsed.query or parsed.path:
            path += "?"
            if parsed.query:
                path += parsed.query
            if params:
                path += params
        if hasattr(request, "content") and request.content is not None:
            web_req.request(
                method=request.method,
                url=path,
                body=request.content,
                headers=headers,
            )
        else:
            web_req.request(
                method=request.method,
                url=path,
                headers=headers,
            )
        response = web_req.getresponse()
        data = response.read()
        web_req.close()
        if (200 <= response.status < 300
            or (response.status == 404
                and hasattr(request, "ignore404")
                and request.ignore404)):
            success = True
        else:
            success = False
        return LRSResponse(
            success=success,
            request=request,
            response=response,
            data=data,
        )